- 예제 입력1
4
Baha enter
Askar enter
Baha leave
Artem enter
- 예제 출력1
Askar
Artem
- 문제 접근
- 출입 기록의 수가 최대 10$^6$이므로 시간 복잡도가 O(N$^2$)이면 1조로 시간 초과
- enter와 leave가 찍힌 사원은 퇴근한 사원
- 대소문자가 다른 경우 다른 사람
- 문제 해결
- 동명이인이 없으니 Set으로 저장하고 한 번 더 나올 경우 삭제
- 슈도 코드
N(출입 기록 개수)
Set overWork(직원 저장 자료구조)
for(N번 반복){
emp에 직원 이름만 저장
if(overWork에 포함된 직원이면){
제거
continue;
}
set에 추가
}
set에 있는 직원 전체 출력
- 코딩하기
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Set<String> overWork = new HashSet<>();
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++){
String employee = br.readLine().split(" ")[0];
if(overWork.contains(employee)){ // set에 있을 경우 삭제
overWork.remove(employee);
continue;
}
overWork.add(employee); // 없을 경우 추가
}
List<String> overWorkList = new ArrayList<>(overWork); // 리스트로 변경
Collections.sort(overWorkList, Comparator.reverseOrder()); // 역순 정렬
StringBuilder sb = new StringBuilder();
for (String emp : overWorkList) {
sb.append(emp).append("\n");
}
System.out.println(sb);
}
'Coding Test > Problem Number' 카테고리의 다른 글
[Java] 서로 다른 부분 문자열의 개수 [11478번] (0) | 2024.07.20 |
---|---|
[Java] 파일 정리 [20291번] (0) | 2024.07.19 |
[Java] 수 이어 쓰기 1 [1748번] (0) | 2024.07.19 |
[Java] 알고리즘 수업 - 피보나치 수 1 [24416번] (0) | 2024.07.19 |
[Java] 칸토어 집합 [4779번] (0) | 2024.07.19 |