반응형
https://www.acmicpc.net/problem/7785
** 2주차 특강 강의자료 (feat. 해시) **
- 해시 자료구조에 대해 더 자세히 알 수 있었다!
https://dong-chan.com/codingtest-hash/#3-division-method
1) 내가 구현한 코드
import java.util.*;
import java.io.*;
public class p7785_회사에있는사람 {
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;
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); //로그에 기록된 출입 기록의 수
HashMap<String,String> map = new HashMap<>();
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine());
String name = st.nextToken(); //ex.Baha
String log = st.nextToken(); //ex. enter
//1. 출입 상태 누적 문제 해결
// => 원래 코드에서는 기존에 저장된 name에 대한 값에 log를 누적해 문자열로 저장했기 때문에,
// => Baha enter leave처럼 중복된 enter와 leave 기록이 하나의 문자열에 합쳐지게 됨
// => 수정된 코드에서는 map.put(name, log);를 통해 name의 마지막 log만 저장함
// => 이렇게 하면 enter나 leave 중 마지막 기록만 남아서, 현재 상태만 확인할 수 있음
// map.put(name,map.getOrDefault(name,"")+log);
map.put(name,log);
}
System.out.println(map);
ArrayList<String> nameList= new ArrayList<>();
//2. 남아 있는 직원 필터링 방식 개선
// => 원래 코드에서는 m.getValue().contains("leave")를 통해 "leave"가 포함되지 않은 사람을 남아있는 것으로 처리하려 했지만,
// => 문자열에 "leave"가 포함되어 있지 않은 경우가 여러 가지일 수 있어 정확하지 않은 로직이었음
// => 수정된 코드에서는 마지막 출입 상태가 "enter"인지 equals로 정확히 비교하여 현재 회사에 있는 사람을 필터링함
for(Map.Entry<String,String> m:map.entrySet()){
// if(!m.getValue().contains("leave")) nameList.add(m.getKey());
if(m.getValue().contains("enter")) nameList.add(m.getKey());
}
Collections.sort(nameList, Collections.reverseOrder());
for(String name:nameList){
bw.write(name+"\n");
}
bw.flush();
bw.close();
br.close();
}
}
2) 추가문제
미들러 - 빙산
https://www.acmicpc.net/problem/2573
챌린저 - 자물쇠와 열쇠
https://school.programmers.co.kr/learn/courses/30/lessons/60059
반응형
'coding_test' 카테고리의 다른 글
[99클럽 4기 코테 스터디 TIL 13일차] 단어순서 뒤집기 (스택/큐) (feat. 배열 거꾸로 출력) (1) | 2024.11.10 |
---|---|
[99클럽 4기 코테 스터디 TIL 12일차] 스택 (feat. Stack 자료구조, String.startsWith()) (0) | 2024.11.08 |
[99클럽 4기 코테 스터디 TIL 11일차] 완주하지 못한 선수 (feat. HashMap) (1) | 2024.11.08 |
[99클럽 4기 코테 스터디 TIL 10일차] 폰켓몬 (feat. HashSet, Math.min()) (1) | 2024.11.06 |
[99클럽 4기 코테 스터디 TIL 9일차] 민균이의 비밀번호 (feat. HashSet, StringBuilder) (0) | 2024.11.06 |