✏️ 문제

🔢 알고리즘
#문자열 #해시맵 #구현
🤯 풀이 방법
시작에서부터 세 음만 볼 것이기 때문에 음의 개수나 3개 이후의 음은 볼 필요가 없다.
시작 세 음을 키로 사용한 해시맵을 만든다.
이때 처음 등장하는 음의 배열을 저장할 때는 값을 노래 제목으로 하고, 두번째 등장하면 키에 해당하는 값을 ?로 대체해준다.
이후 맞힐 음이 등장하면 그 음의 배열을 키로 해시맵에서 찾아서 출력하고 값이 없으면 !를 출력한다.
👾 구현 코드 (자바)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
HashMap<String, String> map = new HashMap<>();
int N = scanner.nextInt(); // 아는 노래의 개수
int M = scanner.nextInt(); // 맞히기 시도 노래 개수
scanner.nextLine();
for (int i = 0; i < N; i++) {
String line = scanner.nextLine();
String[] parts = line.split(" ");
String title = parts[1];
String start = parts[2].concat(parts[3]).concat(parts[4]);
if (map.get(start) != null) {
map.put(start, "?");
} else {
map.put(start, title);
}
}
for (int i = 0; i < M; i++) {
String line = scanner.nextLine().replace(" ", "");;
if (map.get(line) != null) {
System.out.println(map.get(line));
} else {
System.out.println("!");
}
}
}
}
'Algorithm > BOJ' 카테고리의 다른 글
| [BOJ][완전탐색] 1051. 숫자 정사각형 (java) (1) | 2025.02.04 |
|---|---|
| [BOJ][완전탐색] 1018. 체스판 다시 칠하기 (java/python) (1) | 2025.02.03 |
| [BOJ][DFS] 2667. 단지번호붙이기 (java) (0) | 2025.01.23 |
| [BOJ][BFS] 1697. 숨바꼭질 (java / python) (0) | 2025.01.21 |
| [BOJ][DFS/BFS] 1260. DFS와 BFS (java / python) (0) | 2025.01.20 |