문제 https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 풀이 문제를 풀기위한 알고리즘은 따로 필요없었고 구현으로 풀 수 있었다. 문제 자체는 되게 쉬워보였지만 풀다보면 좀 까다로운 조건 처리가 필요함을 알 수 있을 것이다. for문으로 arr의 마지막원소 이전까지 모든 원소에 대해 앞뒤가 같은지 판단했고, 같다면 다시 while 루프를 통해 앞뒤 원소가 같지 않은 인덱스를 발견할때까지..
문제 https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 풀이 BFS로 해결할 수 있었다. 이 문제 같은 경우 단순 동, 서, 남, 북만 탐색하는 것이 아니라 빌딩의 높이에 따른 동, 서, 남, 북, 상, 하까지 탐색해야하기 때문에 dx, dy, dz라는 3개의 배열을 만들어주었다. 이외에도 우리가 탐색해야할 건물이나 거리 배열 등도 3차원으로 만들어주기만 하면 일반적인 BFS 문제들과 크게 다른 것은 없다. Queue에는 x, y, z 좌표인 3개의 ..
문제 https://www.acmicpc.net/problem/23352 23352번: 방탈출 첫줄에 지도의 세로 크기 $N$($1 \le N \le 50$), 가로 크기 $M$($1 \le M \le 50$)이 공백을 두고 주어진다. 둘째 줄부터 $N$줄에 걸쳐 각 방들의 정보 $A$($0 \le A \le 9$)가 공백을 두고 주어진다. www.acmicpc.net 풀이 BFS + 브루트포스로 해결할 수 있었다. 문제를 해결하기위해 최단거리를 구해야하므로 dist라는 2차원 배열을 만들어주었다 dist를 -1로 초기화 시켜준 이유는 따로 방문 처리 배열을 만들지 않고 dist의 값이 -1일때는 아직 방문을 하지 않은 좌표라는 것을 이용하기 위해서이다. 최대 크기의 비밀번호를 구하기위해서는 모든 좌표(..
문제 https://programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 풀이 2차원 DP로 문제를 해결할 수 있었다. DP[i][j]를 좌표 (i, j)까지 도달하여 얻을 수 있는 가장 큰 점수라고 가정했을 때 이전 행에서와 같은 열을 지나오지 못하므로 j의 값에 따른 4개의 분기를 처리해주었다. 일단 DP 테이블을 채우기위해서 0번째 행의 초기값을 세팅해주었고 1행부터는 이전 행에서 현재의 j 값과 다른 ..