[programmers][월간 코드 챌린지 시즌1] 삼각 달팽이
문제 : programmers.co.kr/learn/courses/30/lessons/68645 정수 n이 주어질 때 밑변, 높이가 n인 삼각형을 반시계 방향으로 달팽이 채우기를 진행한 배열을 구해라. ex) n = 3 1 2 6 3 4 5 queue, stack을 이용했다. n, n-1, n-2, n-3 ... 1 개씩 배열을 아래, 오른쪽, 위로 채워나간다. 이때, 아래, 오른쪽을 채울 때는 수를 큐에 넣고 위에 넣을 때는 스택에 넣는다. 높이가 n인 삼각형이므로 크기가 n인 queue 배열, stack 배열 2개가 필요하다. queue[i], stack[i] 에는 삼각형의 i형에 들어갈 수를 저장한다. 모든 배열을 채웠을 때, i를 처음부터 끝까지 탐색하면서 queue에 있는 수를 먼저 넣고 sta..
2020. 9. 17.
[programmers][찾아라 프로그래밍 마에스터] 게임 맵 최단거리
문제 : programmers.co.kr/learn/courses/30/lessons/1844 0과 1로 이루어진 게임 맵이 2차원 배열로 주어진다. 0은 벽, 1은 통로를 의미한다. 시작 위치에서 종료지점으로 가고자 할 때 최단거리를 구해라. 종료지점으로 갈 수 없다면 -1을 반환해라. 전형적인 BFS 문제. 시작 지점에서 상하좌우((-1,0), (1,0),(0,-1),(0,1))로 이동하면서 이동횟수를 저장한다. 이동한 위치가 벽(0)이라면 탐색을 종료하고 통로(1)라면 해당위치에서 상하좌우로 탐색을 계속한다. 너비우선탐색으로 탐색하며 가장 먼저 도착지 (n, m)에 도착했을 때 이동횟수가 정답이 된다. (n,m)에 도착하지 않고 탐색이 종료되었다면 -1을 반환한다. 시간복잡도는 게임맵 크기인 O(N..
2020. 9. 13.