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 |
Tags
- 연습문제
- 고잉버스
- Java
- 자바
- 리눅스마스터 1급 정리
- 스프링 컨테이너
- toCharArray
- 백준 java
- Linux
- map
- 카카오
- java 백준 1차원 배열
- 리눅스마스터 3과목
- 스프링 빈
- 백준 javascript
- 리눅스마스터1급
- 프로그래머스
- 반복문
- 문자열
- Memoir
- JavaScript
- 코테
- 코딩테스트
- 명령어
- 개발자 회고록
- GoingBus
- 월간코드챌린지
- 리눅스
- 자바스크립트 코딩의 기술
- Kotlin
Archives
- Today
- Total
hoon's bLog
Java 프로그래머스 두 개 뽑아서 더하기 자바 본문
반응형
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/68644
[나의 풀이]
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Solution01 {
public static int[] solution(int[] numbers) {
//합계값을 닮을 set 선언
Set<Integer> sumSet = new HashSet<>();
//마지막 인덱스는 안쪽 for문에서 처리하므로 배열길이-1
for(int i = 0; i < numbers.length-1; i++) {
for(int j = i+1; j < numbers.length; j++) {
//입력 배열의 인덱스 두 개값을 더해 set에 add
sumSet.add(numbers[i] + numbers[j]);
}
}
int[] answer = new int[sumSet.size()];
int no = 0;
//return 변수에 값을 넣기 위해 foreach로 데이터를 뽑아줌
for(int num: sumSet) {
answer[no++] = num;
}
//올림차순으로 정렬
Arrays.sort(answer);
return answer;
}
//정답 확인용 코드
public static void main(String[] args) {
int[] result = {};
result = solution(new int[]{1,1,2,3});
System.out.println(Arrays.toString(result));
}
}
[다른사람의 풀이]
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(int[] numbers) {
Set<Integer> set = new HashSet<>();
for(int i=0; i<numbers.length; i++) {
for(int j=i+1; j<numbers.length; j++) {
set.add(numbers[i] + numbers[j]);
}
}
return set.stream().sorted().mapToInt(Integer::intValue).toArray();
}
}
정리
- Set을 활용하여 배열에 데이터를 넣어주는 것이 관건
- HashSet이 아닌 TreeSet으로 바꾸어주면, add 하면서 정렬이 되기 때문에, Arrays.sort(answer) 부분이 절약됨.
- stream은 컬렉션, 배열등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리함.
- set에 담긴 데이터를 sorted()로 정렬 후, mapToInt()로 int 배열로 변환시킨다.
일이 바쁘다는 핑계로 코딩테스트 문제 푸는것에 소홀 했었는데,
최근에 풀면서 나의 부족한 부분을 발견하게된 계기가 된것 같다.
앞으로 이런식으로 푼 문제들을 정리하고, 내 코드 주석 달기 및 다른 사람 풀이 분석/리뷰를 통해,
코딩 실력을 더욱 향상시키고, 배운건 잊지 않도록 꾸준히 기록해 봐야겠다.
참고 블로그 : https://keichee.tistory.com/390
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
Java 프로그래머스 없는 숫자 더하기 자바 (0) | 2022.06.12 |
---|---|
Java 프로그래머스 3진법 뒤집기 자바 (0) | 2022.06.11 |
Java 프로그래머스 음양 더하기 자바 (0) | 2022.06.11 |
Java 프로그래머스 3진법 뒤집기 자바 (0) | 2022.06.11 |
Java 프로그래머스 내적 자바 (0) | 2022.06.10 |