Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SQL
- HashSet
- 기본생성자
- 알고리즘
- 부트캠프
- @builder
- 파이썬
- github
- DTO
- 깃허브
- HTML
- Python
- 부스트코스
- CRUD
- entity
- @AllArgsConstructor
- html tag
- java
- 코드업
- git
- 프로그래머스
- 자바
- lv1
- 에러
- 브랜치
- 상속
- @NoArgsConstructor
- Codeup
- stringbuffer
- 캡슐화
Archives
- Today
- Total
잉?
[프로그래머스] 두 개 뽑아서 더하기 (JAVA 자바) 본문
이번에도 두 가지 방법으로 풀었다.
하나는 TreeSet을 사용하고, 다른 하나는 HashSet을 사용했다.
[TreeSet]
public int[] solution(int[] numbers) {
// TreeSet은 중복X, 기본 오름차순
TreeSet<Integer> hapList = new TreeSet<>();
for(int i=0; i<numbers.length; i++){
for(int j=i+1; j<numbers.length; j++){
hapList.add(numbers[i]+numbers[j]);
}
}
// Integer -> int
// mapToInt : 스트림을 IntStream으로 변환
int[] answer = hapList.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
// 테스트 1 〉 통과 (3.72ms, 73.4MB)
// 테스트 2 〉 통과 (3.06ms, 79.3MB)
// 테스트 3 〉 통과 (2.38ms, 77.1MB)
// 테스트 4 〉 통과 (3.23ms, 72.5MB)
// 테스트 5 〉 통과 (3.37ms, 70.5MB)
// 테스트 6 〉 통과 (5.05ms, 75.5MB)
// 테스트 7 〉 통과 (9.56ms, 78.9MB)
// 테스트 8 〉 통과 (5.86ms, 69.1MB)
// 테스트 9 〉 통과 (3.77ms, 75.3MB)
TreeSet은 중복을 허용하지 않고, 오름차순이 디폴트이다.
stream을 사용하는 이유?
데이터소스마다 다른 방식으로 다뤄야 한다는 문제점.
(Collection.sort(), Arrays.sort()) 이런 문제점을 해결하기 위해 stream을 사용함.
그리고 속도가 느리다.
[HashSet]
public int[] solution(int[] numbers) {
// 중복 X
HashSet<Integer> num = new HashSet<>();
for (int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
num.add(numbers[i] + numbers[j]);
}
}
// 정렬을 위해 list로 변환
ArrayList<Integer> arr = new ArrayList<>(num);
// list 정렬 Collenctions
Collections.sort(arr);
// Integer -> int 변환
int[] answer = new int[arr.size()];
for(int i=0; i<arr.size(); i++){
answer[i] += arr.get(i);
}
return answer;
}
// 테스트 1 〉 통과 (0.26ms, 80.4MB)
// 테스트 2 〉 통과 (0.45ms, 72MB)
// 테스트 3 〉 통과 (0.23ms, 76.4MB)
// 테스트 4 〉 통과 (0.28ms, 72.8MB)
// 테스트 5 〉 통과 (0.49ms, 77MB)
// 테스트 6 〉 통과 (0.59ms, 75MB)
// 테스트 7 〉 통과 (1.72ms, 76MB)
// 테스트 8 〉 통과 (1.27ms, 73.4MB)
// 테스트 9 〉 통과 (0.77ms, 71.8MB)
HashSet은 중복을 허용하지 않는다.
하지만 순서가 없기에 리스트로 변경 후 정렬을 해줘야 한다.
'알고리즘_Algorism > 프로그래머스' 카테고리의 다른 글
[프로그래머스] lv.1 콜라 문제 (JAVA 자바) (0) | 2023.08.04 |
---|---|
[프로그래머스] lv.1 푸드 파이트 대회 (JAVA 자바) (0) | 2023.08.02 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA 자바) (0) | 2023.07.27 |
[프로그래머스] 직사각형 넓이 구하기 + 다차원 배열(2차원 배열) (0) | 2023.06.14 |
[프로그래머스] 문자열 뒤집기 + StringBuffer 사용법, 사용이유 (0) | 2023.05.30 |
Comments