본문 바로가기

PS(알고리즘) 문제풀이26

[백준 17219번 C++] 비밀번호 찾기 (Map/해시) 문제 문제 분석 사이트와 비밀번호를 입력받고 저장해 두었다가 사이트가 주어졌을 때 그 비밀번호를 출력하는 문제이다. - map/unordered_map 에 대한 개념을 알고 있는지를 물어보는 문제이다. - map을 활용하여 비밀번호를 찾는 방법은 여러 가지가 있지만 특히 iterator을 순회하면서 찾고자 하는 값이 map의 second와 일치하는지 일일이 찾아보는 방법과 map의 find 함수를 이용하는 방법이 있는데, map의 find 함수를 이용하여 찾는 것이 빠르다. 정답 코드 이러한 방법대로 구현한 코드이다. - 이때 map의 find 함수는 iterator 형태로 반환한다는 점을 기억해야 한다. - key에 따라 정렬을 해야 하는 것이 중요한 것은 아니므로 unordered_map을 사용한다... 2024. 1. 30.
[백준 10451번] C++ 순열 사이클(BFS) 문제 문제 분석 flood fill 유형이다. 연결되어 있는 뭉텅이의 개수를 세는 유형인데 형태만 바뀌어서 출제된 것이다. 위 행렬을 참고하면 첫 번째 1 3 의 의미는 1번 노드는 3번 노드와 연결이 되어 있다는 의미이다. 두 번째 2 2의 의미는 2번노드와 2번 노드가 연결되어 있다는 것이다. 위 행렬의 연결 상태를 나타낸 것이 위 그림과 같은 것이다. 우리는 이 뭉텅이의 개수를 세어야 한다. 위 그림에서는 3개이므로 정답은 3이다. 이 뭉텅이의 개수를 찾기 위해 DFS나 BFS 탐색을 한다. - 1~n까지 돌면서 아직 방문하지 않은 노드를 찾으면 그 노드를 첫 번째 노드로 DFS/BFS 탐색을 실행한다. - 최종적으로 1~n까지 돌면서 DFS/BFS 탐색을 몇 번 돌았는지가 우리가 찾고자 하는 뭉텅.. 2024. 1. 30.