728x90
반응형
오늘의 학습 키워드
- 해시셋(hashSet)
오늘의 회고
1. 문제
2. 해결 방안
import java.io.*;
import java.util.*;
import java.util.stream.Stream;
/**
* [구름] LV2. 0커플 (해쉬)
*/
public class ZeroCouple {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] numbers = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
Set <Integer> hs = new HashSet<>();
for(int number : numbers) {
// hs에 현재 number의 상반수가 있는지 체크
int reverse = -number;
if(hs.contains(reverse)) { // 있으면 hs에서 제거
hs.remove(reverse);
}else { // 없으면 hs에 넣기
hs.add(number);
}
}
int sum = hs.stream().mapToInt(Integer::intValue).sum();
/* sum 계산 시 for문 사용할 경우
int sum = 0;
for (Integer num : hs) {
sum += num.intValue();
}
*/
System.out.println(sum);
}
}
- for문에서는 hashSet에 number의 상반수가 들어있으면 상반수를 제거하고, 없으면 number를 추가한다.
- for문이 끝나면 hashSet에는 상반수 짝이 없는 값만 남게 된다.
- hashSet에 남아있는 값을 모두 더해서 출력한다.
3. 피드백
- 꼭 해시셋을 안써도 배열이나 다른 자료구조로 해결할 수 있을 것 같다. 일단 문제 유형이 해시라 해시로 ^_^..
4. 새로 알게된 것
int sum = hs.stream().mapToInt(Integer::intValue).sum();
- stream 이용해 한줄로 합산 계산하기.. 와우... 편리편리.. 스트림좀 익숙해지자
728x90
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/Goorm] LV2. 체크 카드 (Java) (0) | 2024.07.19 |
---|---|
[알고리즘/Goorm] LV2. 블록 게임 (Java) (0) | 2024.07.18 |
[알고리즘/Goorm] LV2. 카드 모으기 (Java) (0) | 2024.07.18 |
[알고리즘/Goorm] LV2. 대체 경로 (Java) (0) | 2024.07.18 |
[알고리즘/Programmers] LV2. 모음사전 (Java) (0) | 2024.07.16 |