728x90

<오늘의 학습 키워드>
- HashMap
<오늘의 문제>
제목 : 백준 / 브론즈1 / 31562번 전주 듣고 노래 맞히기
https://www.acmicpc.net/problem/31562
<풀이>
정답은 더보기
더보기
더보기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
private static Map<String, String> map = new HashMap<>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int N = Integer.parseInt(str[0]);
int M = Integer.parseInt(str[1]);
for (int i = 0; i < N; i++) {
String[] songData = br.readLine().split(" ");
map.put(songData[1], songData[2]+" "+songData[3]+" "+songData[4]); // ( "TwinkleStar", "C C G" )
}
for (int i = 0; i < M; i++) {
int cnt = 0;
String name = "";
String sound = br.readLine();
for (String s : map.values()) {
if (s.equals(sound)) {
name = getSongName(sound);
++cnt;
}
}
if (cnt == 0) {
System.out.println("!");
} else if (cnt >= 2) {
System.out.println("?");
} else {
System.out.println(name);
}
}
}
public static String getSongName(String sound) {
for (String title : map.keySet()) {
String titleSound = map.get(title);
if (titleSound.equals(sound)) {
return title;
}
}
return "";
}
}
- HashMap을 이용했다.
- 노래 제목과 음 중에서 앞의 3개만 저장, ( "노래 제목", "E D E" )
- 찾을 음을 map의 values로 일치여부를 비교하면서 cnt 증가
- cnt 증가에 따라 결과 출력
<결론, 주의할점>
- ? 의 조건이 cnt == 2 가 아니라 cnt > 2 인것
- 처음에 map의 key를 음으로 저장했는데 그렇게 하면 문제가 되는게 map에 put할 때 음이 겹치면 마지막 하나만 저장된다.
반응형
'Study or Lecture > 항해 99클럽 코딩테스트 스터디' 카테고리의 다른 글
| 항해 99클럽 코딩테스트 스터디 11일차 TIL (비기너) (1) | 2024.11.07 |
|---|---|
| 항해 99클럽 코딩테스트 스터디 9일차 TIL (비기너) (3) | 2024.11.06 |
| 항해 99클럽 코딩테스트 스터디 6일차 TIL (비기너) (0) | 2024.11.02 |
| 99클럽 코딩테스트 스터디 5일차 TIL (비기너) (1) | 2024.11.01 |
| 99클럽 코딩테스트 스터디 4일차 TIL (비기너) (0) | 2024.10.31 |
댓글