🔺 문제
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
🔺 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Set<String> set = new HashSet<>();
for(int i=0 ; i < n ; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
String name = st.nextToken();
String isIn = st.nextToken();
if(isIn.equals("enter")) {
set.add(name);
} else {
set.remove(name);
}
}
// 스트림 이용해 내림차순 출력
set.stream() // 객체를 스트림으로 변환
.sorted(Collections.reverseOrder()) // 스트림 요소를 역순으로 정렬
.forEach(System.out::println); // 정렬된 스트림 요소를 반복하며 각 요소 출력
}
}
✅ 해결 아이디어
- Set 활용.
- 둘째 줄부터 두 번째로 받은 입력값이 "enter"이면 Set에 값 추가 (add) / 아니면 값 제거 (remove)
- Set 내용 내림차순 출력 → 스트림 활용.
✔ .sorted(Collections.reverseOrder())
: 스트림 요소를 역순으로 정렬
✔ .forEach(System.out::println);
: 정렬된 스트림 요소를 반복하며 각 요소 출력
🔺 다른 풀이들
[백준 7785번] 회사에 있는 사람 (java)
7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주
lotuslee.tistory.com
[BOJ] 백준 7785 회사에 있는 사람 (Java)
https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이
bakssso.tistory.com
💬 느낀 점
문제는 안 어려운데
이렇게 HashSet을 스트림으로... 그것도 내림차순으로 구글링 없이 출력하라고 하면 못 할 것 같다....
복습...하면서 스트림도 외워야겠다.
(참고)
✔ 스트림 sorted 내림차순 정렬
[Stream API] 중간 연산 - sorted 메서드
개념 스트림에서는 스트림 요소들을 정렬할 수 있는 sorted라는 메서드를 제공한다. sorted 메서드는 파라미터에 따라 2가지 버전이 존재한다. sorted() 메서드 스트림 요소의 타입에 따라 기본적으로
dev-kani.tistory.com
[Java/자바] 스트림(Stream) 사용법
스트림(Stream) 스트림은 java8부터 추가된 배열이나 컬렉션의 요소(List, Map, Set)들을 더 편리하게 가공하고 처리하도록 해주는 반복자입니다. 람다식 사용과 연산 과정에서 불필요한 변수를 남기지
lasbe.tistory.com
✔ Stream을 이용한 HashSet 정렬
Java - HashSet 정렬, 3가지 방법
Java에서 HashSet 등, Set를 정렬하는 방법을 소개합니다. HashSet은 순서를 보장하지 않는 자료구조입니다. 이럴 때, HashSet를 List로 변환하고 정렬할 수 있습니다. TreeSet는 Tree 자료구조를 이용하여 구
codechacha.com
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 19532번: 수학은 비대면강의입니다 (0) | 2023.04.09 |
---|---|
[백준/JAVA] 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2023.04.06 |
[백준/JAVA] 14425번: 문자열 집합 (0) | 2023.04.06 |
[백준/JAVA] 10815번: 숫자 카드 (0) | 2023.04.06 |
[백준/JAVA] 2566번: 최댓값 (0) | 2023.04.05 |