본문 바로가기

컴퓨터/프로그래머스

프로그래머스 - 68644번: 두 개 뽑아서 더하기 [Java]

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

 

프로그래머스

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

programmers.co.kr

1. 코드

import java.util.*;
class Solution {
    public ArrayList<Integer> solution(int[] numbers) {
        ArrayList<Integer> answer = new ArrayList<>();
        for(int i = 0; i < numbers.length; i++) {
            for(int j = i + 1; j < numbers.length; j++) {
                if(answer.indexOf(numbers[i] + numbers[j]) == -1)
                    answer.add(numbers[i] + numbers[j]);
            }
        }
        Collections.sort(answer);
        return answer;
    }
}

2. 설명

ArrayList<Integer> answer = new ArrayList<>();
for(int i = 0; i < numbers.length; i++) {
    for(int j = i + 1; j < numbers.length; j++) {
        if(answer.indexOf(numbers[i] + numbers[j]) == -1)
            answer.add(numbers[i] + numbers[j]);
    }
}

두 수의 합의 결과를 이미 추가했는지 확인하기 위해 List의 indexOf() 메서드를 사용하기 위해서 ArrayList를 활용하였습니다. 그리고 이중 반복문을 통해서 모든 두 수의 합을 구해서 존재하지 않다면 answer 추가합니다.

Collections.sort(answer);
return answer;

반복문이 종료한 뒤 answer를 오름차순으로 정렬한 뒤 반환하면 종료됩니다.

3. 정리

  1. List를 활용한다.
  2. 이중 반복문을 통해서 두 수의 합을 구한 뒤 indexOf() 메서드를 통해서 중복 확인을 진행한다.
  3. 전부 추가되었다면 오름차순으로 정렬한다.
출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges