[프로그래머스][Level2] 의상 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 의상의 종류마다 개수를 카운트 해준다. 의상의 종류에 그 의상을 입지 않는 경우의 수를 더해서 모두 곱해주고 모두 안 입은 경우의 수 1가지를 빼준다. #include #include #include using namespace std; int solution(vector clothes) { int answer = 0; map m; for(int i = 0; i < clothes.size(); i++..
[프로그래머스][Level2] 숫자의 표현 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 이 문제는 투포인터 기본 문제이다. 일단 num배열에 모든 숫자들을 차례로 넣는다. 그리고 left와 right 인덱스 값을 1로 둔다. right값이 n + 1일때까지 반복문을 돌며 sum이 n보다 커졌을 때는 left값을 1씩 더해주며 빼줬고, sum이 n보다 작을 때는 right값을 1씩 더해주며 더해줬고, 만약 sum이 n일 때는 카운트해줬다. #include #include using na..
[프로그래머스][Level2] 멀리 뛰기 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 1칸일 때는 1 2칸일 때는 1 + 1, 2 3칸일 때는 1 + 1 + 1, 1 + 2, 2 + 1 이므로 피보나치 규칙을 찾을 수 있다. #include #include using namespace std; int dp[2001]; int dynamic(int n){ dp[1] = 1; dp[2] = 2; for(int i = 3; i
[프로그래머스][Level2] 더 맵게 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 우선순위 큐는 기본 정렬이 내림차순이기 때문에 greater를 통해 오름차순으로 정렬해준다. 우선순위 큐에 스코빌 지수를 넣고, 무한 반복문을 돌면 되는데 탈출 조건이 두가지가 있다. 첫번째로는 pq.size()가 2보다 작으면 pop을 두번 할 수 없고 모든 음식의 스코빌 지수를 K이상으로 만들 수 없다는 뜻이기 때문에 -1을 return 해준다. 두번째로는 pq.top()이 K보다 크거나 같을 때..
[프로그래머스][Level2] 다음 큰 숫자 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 이 문제는 10진수를 2진수로 바꾼 뒤, 1의 개수만 같으면 되기 때문에 특별히 reverse를 해주지 않았다. 처음 n을 2진수로 변경했을 때 1의 개수를 cnt1에 담고, n을 계속 1씩 더하여 2진수로 변경했을 때 1의 개수를 res에 담아서 두 값이 같다면 무한 반복문을 탈출하여 n값을 리턴하는 식으로 구현했다. #include #include using namespace std; string..
[프로그래머스][Level2] 게임 맵 최단거리 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 bfs의 가장 기본 알고리즘이다. 만약 dist[maps.size() - 1]maps[0].size() - 1] 부분이 0이라면 도달하지 못했다는 뜻이므로 -1을 리턴해준다. #include #include using namespace std; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, -1, 0, 1}; int dist[101][101]; int bfs(int x, ..
[프로그래머스][Level2] 124 나라의 숫자 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 이 문제는 3진법의 변형 문제이다. 10진수에서 3진수를 구할 때의 알고리즘을 쓰면 되는데 만약에 나머지가 0이라면 0 대신 4를 붙여주면 되는 문제이다. 더하여, n의 값에 -1을 해줘야한다. 풀이 1 #include #include #include using namespace std; string solution(int n) { string answer = ""; while(n != 0){ if(..
[프로그래머스][Level2] 2개 이하로 다른 비트 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 이 문제는 홀수인지, 짝수인지 구분해서 해결해야하는 문제이다. 짝수일 경우에는 비트의 끝자리가 항상 0이기 때문에 다음 숫자가 들어오면 끝자리가 0에서 1로 바뀌게 된다. 그러므로 x보다 큰 값은 항상 현재값 + 1이 된다. 그러나, 홀수일 경우에는 비트의 끝자리가 항상 1이기 때문에 **올림수**가 발생하게 된다. 1이 연속하는 수를 세어 3번 연속이라면 2의 2제곱, 4번 연속이라면 2의 3제곱 ..
[프로그래머스][Level2] 2 x n 타일링 c++
·
🍞 Problem Solving/Programmers
https://programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이과정 2 x n 타일링은 피보나치 규칙이다. 그러므로 다이나믹 프로그래밍의 기본대로 구현하면 된다. #include #include using namespace std; int dp[60001]; int dynamic(int n){ dp[1] = 1; dp[2] = 2; for(int i = 3; i
[백준] 1507 궁금한 민호 c++
·
🍞 Problem Solving/Baekjoon
https://www.acmicpc.net/problem/1507 1507번: 궁금한 민호 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 각각의 도시 사이에 이동하는데 필요한 시간이 주어진다. A에서 B로 가는 시간과 B에서 A로 가는 시간은 같다. 또, A와 B www.acmicpc.net 풀이과정 예제 입력으로 플로이드 와샬 알고리즘을 수행한 시간이 입력된다. 그럼에도 불구하고, 플로이드 와샬을 할 때 어느 도시를 거치는 게 더 짧다면 최소 이동시간이 아니므로 이는 불가능한 경우에 해당되며 -1을 출력한다. i에서 j로 가는 경로가 k로 거쳐가는 경우와 같다면 모든 경로를 최소의 도로로 커버해야 하므로 k를 거쳐가는 도로를 선택한다. #include #inclu..