문제 풀이 및 개발 공간

[백준] 13414번 수강신청 (silver 3 본문

백준공부/java

[백준] 13414번 수강신청 (silver 3

gomduri43 2023. 5. 3. 03:03

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(br.readLine());
        HashMap<Integer,String> ranking=new HashMap<>();
        HashMap<String,Integer> people=new HashMap<>();
        int k=Integer.parseInt(st.nextToken());
        int l=Integer.parseInt(st.nextToken());
        int rank=1;

        for(int i=0; i<l; i++){
            String id=br.readLine();
            if(people.get(id)==null){
                people.put(id,rank);
                ranking.put(rank,id);
            }
            else{
                int temp=people.get(id);
                ranking.put(temp,"none");
                people.put(id,rank);
                ranking.put(rank,id);
            }
            rank++;
        }

        for(int i=1; i<=l; i++){
            if(!ranking.get(i).equals("none")){
                bw.write(ranking.get(i)+"\n");
                k--;
            }
            if(k==0){
                break;
            }
        }
        bw.flush();

    }
}
import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[]args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.valueOf(st.nextToken());
        int k=Integer.valueOf(st.nextToken());

        HashMap<String,Integer> dict=new HashMap<>();
        Queue<String> que=new LinkedList<>();

        for(int i=1; i<=k; i++){
            String temp=br.readLine();
            dict.put(temp,i);
            que.offer(temp);
        }

        int numth=1;
        while(!que.isEmpty()){
            String temp=que.poll();
            if(numth==dict.get(temp) && n>0){
                bw.write(temp+"\n");
                n--;
                if(n==0){
                    break;
                }
            }
            numth++;
        }
        bw.flush();
    }
}

// 24년 2월 27일 코드. 확실히 간결해진게 보인다.