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");
}
으로 해서 모든 요소 뒤에 개행을 붙혀주는 걸로 했는데 어째서인지 위의 코드보다 메모리와 시간이 더 걸린다.
개행 하나의 차이가 이렇게 컸던가...?
그래서 위의 코드로 최종 제출했다.