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
- 구현
- two pointers
- array
- Number Theory
- bit manipulation
- Matrix
- geometry
- implement
- greedy
- Counting
- Binary Tree
- 코딩테스트
- 자바
- hash table
- simulation
- string
- Method
- SQL
- Math
- 코테
- Tree
- java
- 파이썬
- sorting
- Binary Search
- Stack
- Data Structure
- database
- dynamic programming
- Class
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.1] 두 개 뽑아서 더하기 본문
1. Input
1) 정수 배열 numbers
2. Output
1) numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 오름차순으로 담은 배열
3. Constraint
1) numbers의 길이는 2 이상 100 이하
2) numbers의 모든 수는 0 이상 100 이하
4. Example
Input: numbers={2,1,3,4,1} -> Output: {2,3,4,5,6,7}
설명:
2 + 1 = 2 + 1 = 3
1 + 3 = 3 + 1 = 4
2 + 3 = 1 + 4 = 4 + 1 = 5
1 + 1 = 2
2 + 4 = 6
3 + 4 = 7
5. Code
1) 첫 코드(2022/??)
import java.util.Arrays;
int l = numbers.length;
int[] answer;
// lC2 만큼의 덧셈 연산을 해야 한다.
int[] sum = new int[l*(l-1)/2];;
// 덧셈 연산 결과를 sum[k]에 저장
int k=0;
for(int i=0 ; i<l-1 ; i++)
for(int j=i+1 ; j<l ; j++)
sum[k++] = numbers[i] + numbers[j];
// sum의 요소 오름차순 정렬
Arrays.sort(sum);
// 모든 수가 0일 경우 return
int sl = sum.length;
if(sum[sl-1] == 0)
return new int[] {0};
// sum의 중복 제거
int[] tmp = new int[sl];
k=0; // tmp의 인덱스
tmp[0] = sum[0];
for(int i=1 ; i<sl ; i++) {
if(sum[i] > tmp[k]) {
tmp[k+1] = sum[i];
k++;
}
}
// tmp에서 0 시작 위치
for(k=sl-1 ; k>=0 ; k--)
if(tmp[k] != 0) {
k++;
break;
}
// answer 채우기
answer = new int[k];
for(int i=0 ; i<k ; i++)
answer[i] = tmp[i];
return answer;
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[프로그래머스/Lv.1] 모의고사 (0) | 2022.11.22 |
---|---|
[프로그래머스/Lv.1] 키패드 누르기 (0) | 2022.11.21 |
[프로그래머스/Lv.1] 3진법 뒤집기 (0) | 2022.11.17 |
[프로그래머스/Lv.1] 내적 (0) | 2022.11.17 |
[프로그래머스/Lv.1] 신규 아이디 추천 (0) | 2022.11.15 |