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
- 중첩for문
- 자바자료형
- 자바상수
- 겟셋함수
- 오버로딩
- 효율적인연산
- 자바함수
- read()함수
- 자바별찍기
- 자바형식
- 기타제어자
- 자바실행방법
- 자바기타제어자
- 자바접근지정자
- 프로그래머스
- 변수명명규칙
- 변수의 초기화
- 반복문라벨
- 자바제어문
- 자바switch문
- 자바if문
- 자바클래스
- 팩토리얼재귀
- 자바수우미양가
- 오라클
- 클래스배열
- SQL
- 누승재귀
- 자바연산자
- 연산자우선순위
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 프로그래머스 - 두 개 뽑아서 더하기 본문
https://programmers.co.kr/learn/courses/30/lessons/68644
코딩테스트 연습 - 두 개 뽑아서 더하기
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한
programmers.co.kr
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
TreeSet<Integer> ts = new TreeSet<Integer>();
for (int i = 0; i < numbers.length-1; i++) {
for (int j = i+1; j < numbers.length; j++) {
ts.add(numbers[i]+numbers[j]);
}
}//for
answer = new int[ts.size()];
int i = 0;
for(int t : ts) {
answer[i] = t;
i++;
}//for
return answer;
}//sol
}//class
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
// numbers 길이 2~100
int maxSize = 0;
for (int i = 1; i < 100; i++) {
maxSize+=i;
}//for
int [] answer= new int[maxSize];
Arrays.fill(answer, -1); // 0+0 = 0이랑 구별
int len = numbers.length;
int idx = 0;
int sum;
// 중복체크+합
for (int i = 0; i < len-1; i++) {
for (int j = i+1; j < len; j++) {
sum = 0;
sum = numbers[i] + numbers[j];
if (! isDuplicateCheck(answer, idx, sum) ) {
answer[idx] = sum;
idx++;
}//if
}//for
}//for
// 기본값 (-1)의 개수
int count = 0;
for (int i : answer) {
if (i == -1) count++;
}//for
// (-1)을 제외한 새로운 배열
int [] newA = new int[answer.length-count];
for (int i=0; i<newA.length; i++) {
newA[i]=answer[i];
}//for
// 정렬
// Arrays.sort(newAnswer);
sort(newA);
return newA;
}//sol
// 정렬 함수
private static void sort(int[] newA) {
/*
* 배열.길이 6 총5번
* i j j j j j
* 0 0 1 2 3 4 <5-i
* 1 0 1 2 3
* 2 0 1 2
* 3 0 1
* 4 0
* <5
*/
int len = newA.length;
for (int i = 0; i < ( len - 1 ); i++) { //0~4
for (int j = 0; j < ( len -1 - i ); j++) {
if (newA[j]>newA[j+1]) { //swap(...
int tmp = newA[j+1];
newA[j+1] = newA[j];
newA[j] = tmp;
}//if
}//for
}//for
}
// 중복 체크 함수
private static boolean isDuplicateCheck(int[] answer, int idx, int sum) {
for (int i = 0; i <= idx; i++) {
if(answer[i]==sum) return true;
}
return false;
}//isdup
}//class
'Algorithm' 카테고리의 다른 글
[Oracle] 프로그래머스 SQL 고득점 Kit - String, Date (0) | 2021.07.13 |
---|---|
[Oracle] 프로그래머스 SQL 고득점 Kit - JOIN (0) | 2021.07.13 |
[Oracle] 프로그래머스 SQL 고득점 Kit - IS NULL (0) | 2021.07.13 |
[Oracle] 프로그래머스 SQL 고득점 Kit - GROUP BY (0) | 2021.07.13 |
[Oracle] 프로그래머스 SQL 고득점 Kit - SUM, MAX, MIN (0) | 2021.07.13 |
Comments