[Java] 2021 위클리 챌린지 5주차 - 모음 사전
A, E, I, O, U 5개의 모음을 사용하여 만들 수 있는 길이 5 이하의 모든 단어가 수록된 단어집이 있다. 단어는 사전순으로 배열되어 있으며, 첫번째 단어는 "A"이고, 두번재 단어는 "AA"이고 마지막 단어는 "UUUUU"이다. word를 input으로 받을 때, 이 단어가 단어집에서 몇번째째 단어인지 return 하는 문제이다. 대략적으로 계산해보았을 때 총 단어의 개수는 6^5 = 7776 개를 넘을 수 없다. 단어의 위치를 알 수 있는 규칙을 찾는 것도 방법이겠지만, 단어의 수가 많지 않으니 brute force 방법을 이용해 풀어도 된다. orderMap이라는 map변수를 만들어서 (단어, 순번) 조합으로 map에다 저장을 하고, solution에는 map에서 순번을 찾아서 return하..
백준 2251번 물통(Java)
A, B, C 세개의 물통이 있고, 처음에는 A와 B물통에는 물이 비어 있고 C물통에만 물이 차있다. 물통의 최대 용량이 input으로 주어지고, 어떤 물통에서 다른 물통으로 물을 따를 때는 다른 물통이 가득 찰 때까지 혹은, 따르는 물통의 물이 빌 때까지 따를 수 있다. A물통이 비어 있을 때, C의 물통에 차있는 물의 양으로 가능한 것을 오름차순으로 출력해야한다. 물을 따르는 경우는 A->B, A->C, B->A, B->C, C->A, C->B 총 6가지 경우가 있다. 이 때, 현재 물통에 담긴 물의 양을 상태로 저장하여 한번 방문한 상태의 경우는 재방문 하지 않도록 BFS를 구현하여 문제를 풀어주면 된다. 나는 물의 양을 "-"로 연결하여 Key를 만들었고, Set을 이용해서 방문 여부를 체크했다...
백준 1022번 소용돌이 예쁘게 출력하기 (c++)
소용돌이는 여러개의 정사각형들이 둘러쌓여 있는 것으로 볼 수 있다. 정사각형의 각변에서 숫자가 어떻게 늘어가는지 규칙을 찾아서 출력해주면 된다. 1. 정사각형의 오른쪽 변 행이 위로 올라갈수록 숫자가 증가한다. 행은 변수 i 로 받아서 관리하고, 위로 올라가는 것은 i가 감소하는 것을 의미한다. 그래서 startNum -i 임을 알 수 있고 -i , -i + 1, -i +2 ,..., i 를 0,1,2,3,... i *2 로 바꾸기 위해서 j 를 더해준다. 오른쪽 변이 j이므로 j는 항상 고정된 값이다. 그래서 startNum - i + j 가 오른쪽 변의 숫자 공식이 된다. 2. 정사각형의 위쪽 변, 왼쪽, 아래쪽 변도 동일한 방법으로 수식을 적을 수 있다. 숫자의 최대값을 구하고, 최대값의 길이만큼 ..