[99클럽 코테 스터디 2주차 보너스문제 TIL] 백준 7785 회사에 있는 사람

말하는 감자·2024년 11월 7일
0
post-thumbnail

99클럽 코테 스터디 1주차 보너스문제 TIL

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 해시

📌 공부한 내용

📍 오늘의 문제

📍작성 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;

public class Main {

	public static void main(String[] args) throws IOException {
		
		HashMap<String, String> workMap = new HashMap<>();
		
		
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    int N = Integer.parseInt(br.readLine());

	    for (int i=0; i<N; i++) {
	    	String[] log = br.readLine().split(" ");
	    	workMap.put(log[0], log[1]);
	    }
	    
	    
	    br.close();
	    
	    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

	    List<String> staff = new ArrayList<String>();
	    
	    for (Entry<String, String> entry : workMap.entrySet()) {
	    	if("enter".equals(entry.getValue())) staff.add(entry.getKey());
        }
	    
	    Collections.sort(staff, Collections.reverseOrder());
	    
	    for(int i=0; i<staff.size(); i++) {
	    	bw.write(staff.get(i) + "\n");
	    	if(i != staff.size() - 1) {
	    		bw.write("\n");
	    	}
	    }

	    bw.flush();
	    bw.close();
		
	}
}

📌 오늘의 회고

현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다.

역순으로 정렬을 안해서 두번정도 틀렸다...ㅠ

출입 로그를 해시에 넣고 마지막 상태가 "enter"인 직원의 이름을 리스트 staff에 저장한 후 Collections.sort(staff, Collections.reverseOrder());를 통해 역순으로 정렬했다.

그리고 for문을 통해 staff를 하나씩 출력해주되 마지막 요소가 아니라면 다 개행을 추가해줬다.


사실 마지막 for문은

for(String name : staff) {
	bw.write(name + "\n");
}

으로 해서 모든 요소 뒤에 개행을 붙혀주는 걸로 했는데 어째서인지 위의 코드보다 메모리와 시간이 더 걸린다.

개행 하나의 차이가 이렇게 컸던가...?
그래서 위의 코드로 최종 제출했다.

profile
나는 말하는 감자다

0개의 댓글