전체 글 58

백준 12100번 2048(easy)

시뮬레이션 문제이다. 이동하는 벽 부분에서 쭉 보면서 겹치는 블록이 있는지를 확인해가면서 같으면 합쳐지도록 deque을 이용해서 만들어주었다. 예를 들면 다음과 같다. 4*4의 1행이 2 2 4 8이라고 하자. 코드에 구현된 알고리즘을 바탕으로 deque에 넣는 과정은 다음과 같다. 맨 처음에 deque은 비어있고, 그래서 첫 번째 2는 {2, 0}으로 들어간다. 두 번째 2의 경우 덱의 뒷 부분이 {2, 0}이므로 같은 블록이면서 이전에 합쳐지지 않았으니 이를 두 번째 2와 합쳐서 다시 덱에 넣어준다. 그럼 덱에는 {4, 1}이 들어있다. 1이 나타내는 건 합쳐졌다는 뜻이고, 0은 합쳐지진 않았다는 뜻이다. 세 번째 4의 경우 덱을 확인하는데, 덱이 안비어있고 덱의 가장 뒤 원소가 {4, 1}인데 이 ..

백준/구현 2022.03.09

백준 2011번 암호코드

DP문제다. dp[i]를 i번째 글자까지 해석했을 때의 암호의 수라고 놓고 dp로 해결해주면 된다. 이 때 0으로 시작하는 암호는 무조건 틀린 경우라 제외해줘야 한다. 그 이후 두 번째 자리부터 보면서, 보는 자리가 0인 경우는 앞 자리를 봐서 그 앞자리와 묶어서 10이나 20이 될 수 있으면 오류가 아니지만, 아닌 경우는 에러라서 0을 출력하고 return한다. 보는 자리가 0이 아니라면 그걸 한자리 수로만 볼 수도 있고, 앞자리와 묶어서 하나의 알파벳으로 해석할 수도 있다. 두 가지 경우를 모두 더해주면 된다.

백준/DP 2022.03.08