본문 바로가기

Problem

[C/C++] BOJ 5014 :: 스타트링크 BOJ 5014 :: 스타트링크 문제 링크 : https://www.acmicpc.net/problem/5014 나의 풀이 예외조건을 제외하고 넓이우선탐색으로 최소 버튼 수를 도출한다. * 예외조건* 1) 현재층 = 도착층일 때, 0 출력 2) 현재층 > 도착층인데 아래층으로 갈 수 없을 때3) 현재층 < 도착층인데 윗층으로 갈 수 없을 때4) 윗층과 아래층 모두 갈 수 없을 때 use the stairs 출력 bfs탐색한 후, G에 도착가능할 때, 최소 버튼 수 출력G에 도착가능하지 않을 때, use the stairs 출력 나의 코드 Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_5014/BO..
[C/C++] BOJ 3085 :: 사탕 게임 BOJ 3085 :: 사탕 게임 문제 링크 : https://www.acmicpc.net/problem/3085 나의 풀이 1. 주어진 행렬의 최대 수열을 먼저 찾는다. 2. 교환할 때마다, 교환한 행, 열에 한해 최대 수열을 찾는다. 3. 교환은 상하좌우 인접한 곳을 탐색하며, 배열 범위를 넘지 않고, 같은 색이 아니며, 방문했던 위치가 아닌 경우에만 가능하다. 4. 한 지점의 상하좌우 인접 위치를 교환하고 최대 수열을 구했다면 그 지점은 방문 표시한다. 나의 코드 Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_3085/BOJ_3085.cpp 12345678910111213141516171819..
[C/C++] BOJ 2493 :: 탑 BOJ 2493 :: 탑 문제 링크 : https://www.acmicpc.net/problem/2493 나의 풀이 머릿속으로 생각해서 풀었는데 바로 맞춰서 놀랐다.. 나의 스마트함에 감..탄.. ㅈㅅ * 탑은 왼쪽의 자신보다 높은 탑으로부터 영향을 받는다. 하나씩 탐색하면서 stack에 push한다. ex) 6 9 5 7 4 에서 6은 0stack : 6 9는 6보다 크므로 stack을 뒤져 이전에 탐색했던 탑의 높이와 비교한다.이 때, stack에 있던 값을 빼내며 탐색한다. => 다시 넣을 필요가 없다. ex) 7 6 5 4 3 2 6 일 때, 가장 끝 6은 두 번째 6을 만날 때까지 stack에서 pop한다. 그 후, ans를 갱신하고 두 번째 6을 pop하면 stack에는 7만 남게되고다시 자신..
[C/C++] BOJ 3048 :: 개미 BOJ 3048 :: 개미 문제 링크 : https://www.acmicpc.net/problem/3048 나의 풀이 개미의 정보를 담을 구조체를 만든다.dir : 개미의 방향, 0 : 오른쪽으로 이동하는 그룹, 1 : 왼쪽으로 이동하는 그룹alpha : 개미의 알파벳 반복문을 돌며 오른쪽으로 이동중인 개미가 왼쪽으로 이동중인 개미와 마주쳤을 때 둘의 위치를 바꾼다. 나의 코드 Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_3048/BOJ_3048.cpp 12345678910111213141516171819202122232425262728293031323334353637383940414243444..
[C/C++] BOJ 1010 :: 다리놓기 BOJ 1010 :: 다리놓기 문제 링크 : https://www.acmicpc.net/problem/1010 나의 풀이 다리 만들기는 아래와 같은 규칙이 있다. dp[n][m] = dp[n-1][m-1] + dp[n][m-1] 이를 이용하여 모든 table을 채운 뒤, input에 따른 dp[N][M]을 출력한다. 사용되지 않는 0행을 이용해서 table을 채우기 위해 0행을 모두 1로 채워주었다. 나의 코드 Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_1010/BOJ_1010.cpp 12345678910111213141516171819202122232425262728293031// 백준알고리..
[C/C++] BOJ 2251 :: 물통 BOJ 2251 :: 물통 문제 링크 : https://www.acmicpc.net/problem/2251 나의 풀이 모든 물통에 들어갈 수 있는 물의 양의 상태를 BFS로 탐색해나간다. [총 6가지 경우]A물통에 물이 있으면 => B와 C에 물을 채울 수 있다.B물통에 물이 있으면 => A와 C에 물을 채울 수 있다.C물통에 물이 있으면 => A와 B에 물을 채울 수 있다. [Ex] 가득 채울 수 있는 물의 양이 A, B, C이고현재 들어있는 물의 양이 각 a, b, c 일 때, A물통에 물이 있으면, B와 C에 물을 채울 수 있다.B에 물을 채울 때, 1) B의 물통을 모두 채우고 물이 남는 경우, 각 물의 양의 상태는 a-(B-b), B, c 가 된다.2) B의 물통을 가득 채울 수 없는 경우, 각..
[C/C++] BOJ 1941 :: 소문난 칠공주 BOJ 1941 :: 소문난 칠공주 문제 링크 : https://www.acmicpc.net/problem/1941 나의풀이 나중에 보니.. 문제 푸신 다른 분들에 비해 과정을 두배로 하여서 시간이 오래 걸린당..ㅎ.ㅎ 5*5의 여학생반에서 7개를 선택할 수 있는 경우를 모두 탐색하여 연결되어있고 S가 4개 이상일 때에 답을 갱신한다. 나의 코드 Github : https://github.com/j2wooooo/Daliy_Algorithms/blob/master/Daliy_Algorithms/BOJ_1941/BOJ_1941.cpp 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535..
[C/C++] BOJ 11559 :: Puyo Puyo BOJ 11559 :: Puyo Puyo 문제 링크 : https://www.acmicpc.net/problem/11559 나의 풀이 BFS 방식으로 연결된 블록의 개수를 찾는다. 4개 이상 연결되어있으면 그 위치의 map을 모두 '.'로 변경시킨다. 모든 정점에 대한 탐색을 마치면, 한 열마다 queue로 '.'가 아닌 값을 저장한후, 가장 밑 행부터 채워넣음으로써 map을 갱신한다. 내가 실수했던 부분) 1. 원래 항상 하던 방법인 !q.empty() 로 하지 않고 다른 방식으로 하려다 보니 연결된 블록을 찾을 때 while문에서 빠져나가는 오류가 발생..2. 문제를 제대로 안읽어서 삭제될 블록을 하나 찾을때마다 ans를 갱신함..3. index,, 0~12미만이아니라 11~0까지로 구현하는 것에서 ..