Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 두 개 뽑아서 더하기 (자바/Java) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 두 개 뽑아서 더하기 (자바/Java)

luke-king 2024. 8. 18. 21:01

 

 

 

 

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/68644

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

 

풀이.


class Solution {
    public int[] solution(int[] numbers) {
        
	ArrayList<Integer> list = new ArrayList<Integer>();
        int sum = 0;
    
		
		for (int i = 0; i < numbers.length; i++) {
			for (int j = i+1; j < numbers.length; j++) {
				sum = numbers[i] + numbers[j];
				if(list.indexOf(sum) < 0) {
					list.add(sum);
				}
					
			}

		}
		
		int[] answer = new int[list.size()];
		for (int i = 0; i < answer.length; i++) {
			answer[i] = list.get(i);
		}
		Arrays.sort(answer);
		
		for (int i = 0; i < answer.length; i++) {
			System.out.println(answer[i]);
		}
                
        return answer;
    }
}

한동안 바빠서 오랜만에 글을 올린다...

오늘 문제는 프로그래머스 "두 개 뽑아서 더하기" 문제다.

이번 문제에서 중점은 서로 다른 인덱스끼리 더하고 중복되는 값들은 빼고 배열 내에 담는 거다.

그럼 바로 풀이 해보겠다.

 

1.  우선은 ArrayList를 사용해 준다. 그 이유는 각 인덱스 값들을 더했을 때  indexOf() 메서드를 사용해 중복된 값들을 넣지 않기 위해서다.

 

2. if문을 보면 list.indexOf(sum) < 0 이 있는데 indexOf는 list값 안에 중복된 값이 있다면 0을 반환하기에 false라 중복된 값은 담기지 않는다 그 반대로 중복되지 않은 값이 들어오게 되면 indexOf()는 -1을 반환해 list 안에 들어가게 되는 것이다.

 

3. 위 2번 설명까지 이해했다면 나머지 부분은 금방 하셨을 거라 생각하며  Arrays.sort를 사용해 오름 차순으로 바꿔주면 끝이다.