본문 바로가기

BOJ 9322- 철벽 보안 알고리즘 문제 링크(Link)https://www.acmicpc.net/problem/9322 문제 해결(Solution) 1. 제 1 공개키와 제 2 공개키의 순서를 저장하고 처리하는 자료구조에 관한 문제. 2. ① 문자열을 인덱스로 저장하면서 동시에 자동 정렬이 되지 않는 자료구조인 'unordered_map'을 사용.② 제 1 공개키의 순서를 저장하는 배열(order)을 사용.③ 제 2 공개키가 주어지면, ②에서 사용한 배열의 값을 인덱스로 사용해서 답을 저장하는 배열(answer)을 사용. ex) 제 1 공개키 : "I AM HAPPY" 제 2 공개키 : "AM HAPPY I" 암호문 : "LOVES HER HE" - unordered_map(first==string, second==order) : { {.. 더보기
BOJ 1103 - 게임 문제 링크(Link)https://www.acmicpc.net/problem/1103 문제 해결(Solution) 1. DP를 이용해서 문제 해결한다. 2. 사이클이 존재 여부를 확인하는 bool 배열을 만들어서 확인한다. 주의할 점 || 생각해볼 점(Caution || Consideration) 1. main함수 외에서 프로그램을 강제 종료할 수 있는 exit 함수를 사용. exit의 매개 인자에 0이면 정상 종료, 그 외의 값은 비정상 종료임을 알린다. 2. 사이클의 존재 여부를 확인하는 쉬운 방법. ① 처음 vertex에 방문했을 때, 방문했음을 체크(chk[row][col]=true)한다.② 상하좌우 이동한다. (이 행위는 다른 문제에선 다르게 응용될 수 있다) ③ 언체크(chk[row][col].. 더보기
BOJ 2206 - 벽 부수고 이동하기 문제 링크(Link)https://www.acmicpc.net/problem/2206 문제 해결(Solution) 1. BFS의 응용문제. 주의할 점 || 생각해볼 점(Caution || Consideration) 1. 만약 벽의 좌표를 모두 저장한 후, 하나씩 부수며 BFS를 하면 시간복잡도 O(NM(N+M))이 되므로 시간 초과를 받을 수 밖에 없다. 2. 보통은 2차원 배열을 이용해서 문제를 해결하지만, 이 문제는 3차원 배열을 이용하면 단 한번의 BFS를 통해서 답을 구할 수 있다. 3. dist[i][j][k] = (i, j)에서 k가 1이면 벽을 만나서 부수고 이동, k가 0이면 벽을 만나면 이동 불가. 참고(Reference) - ※ 정확하고 부드러운 태클은 언제나 환영입니다. 더보기