99클럽 코테 스터디 7일차 TIL

Gaeng·2024년 11월 3일
post-thumbnail

전주듣고노래맞추기

KeyWord : Hash

  • st.hasMoreTokens()
  • for(Map.Entry<String, String> entry : song.entrySet())
    이거에 얼른 익숙해지기..
    Map의 메소드 얼른 익숙해지자.

해결방안

  • 먼저 입력 값 정리
  • 입력 받을 때, 글자 수는 변수에 안넣고, 계이름은 3개만 저장
  • HashMap을 통해 Key, Value -> Key(곡이름), 계이름(3개)
  • 그 값을 사용자가 아는지 모르는지 확인하기 위해, 배열을 통해 3개의 이름만 담는다.
    그 값을 EntrySet으로 값 비교해서 1보다 크면 ?
    1이면 노래제목
    0이면 !
    출력하게 했음.
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken()); //음을 아는 노래
        int M = Integer.parseInt(st.nextToken()); //맞혀야하는 노래
        Map<String, String> song = new HashMap<String, String>();
        //여기서부터는 아는 노래 저장
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            int T = Integer.parseInt(st.nextToken());
            String S = st.nextToken();
            String code = "";
            for (int j = 0; j < 3; j++) {
                code += st.nextToken();
            }
            song.put(S, code);
        }
        //여기서부터는 사용자 입력값
        String[] q = new String[M];
        for (int i = 0; i < M; i++) {
            int song_count = 0;
            String result ="";
            st = new StringTokenizer(br.readLine());
            q[i] = "";
            while (st.hasMoreTokens()) {
                q[i] += st.nextToken();
            }
            for(Map.Entry<String, String> entry : song.entrySet()){
                if(entry.getValue().equals(q[i])){
                    song_count++;
                    if(song_count > 1){
                        result = "?";
                    }else if(song_count == 1){
                        result = entry.getKey();
                    }
                }
                if(song_count<1){
                    result= "!";
                }
            }
            System.out.println(result);
        }
    }
}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글