https://programmers.co.kr/learn/courses/30/lessons/12946# 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대 programmers.co.kr [프로그래머스][C++] 하노이의 탑 금융권에서는 정말 자주 나오는 하노이의 탑.. 몇년 전 삼성 면접에서도 나온 적이 있다. #include #include using namespace std; vector answer; void move(int from, int by, int to) { answer.push_back({ from, t..
https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr [프로그래머스][C++] 땅따먹기 처음에는 완탐으로 풀었으나 당연히 시간초과 나버림.. 모든 경우의 수를 구하는 거니 경우의 수가 4*3^(N-1) 인데, N은 10000이하의 자연수.. #include #include #include using namespace std; int answer = 0; void dfs(int r, int c, ..
https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr [프로그래머스][C++] 다음 큰 숫자 using namespace std; int countOne(int n) { int ret = 0; while (n != 0) { ret += n % 2; n /= 2; } return ret; } int solution(int n) { int cnt = countOne(n); while (..
https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr [프로그래머스][C++] 배달 #include #include #include using namespace std; int dijkstra(int N, int K, vector map) { int ret = 0; priority_queue pq; vector dist(N + 1, 0x7fffffff); pq.push({ 0,1 }); d..
https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net [백준][C++] 14500 테트로미노 #include #include using namespace std; int N, M; int arr[502][502]; int visit[502][502]; int dy[4] = { -1,1,0,0 }; int dx[4] = { 0,0,-1,1 }; int ans = 0; void dfs(int y, int x, int n, int sum) { if (n ..
https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr [프로그래머스][C++] 괄호 회전하기 #include #include #include using namespace std; bool check(string s) { stack st; for (char c : s) { if (c == '}') { if (st.top() == '{') st.pop(); else st.push(c); } else if (c == ']') { if (st.top() == '[') st.pop(); else st.push(c); } else if (c == ')') { if (st.top() == '(') st...
https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr [프로그래머스][C++] 피로도 #include #include using namespace std; int answer = -1; void dfs(int p, int cnt, vector dungeons, vector visit) { answer = max(answer, cnt); for (int i = 0; i < dungeons.size(); i++..
https://www.acmicpc.net/problem/1913 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net [백준][C++] 1913 달팽이 #include using namespace std; int arr[1000][1000] = {}; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, find; int ay, ax; cin >> N >> find; int s = N / 2; int y = s, x ..