본문 바로가기

공부해 codingTest

프로그래머스 JAVA Level 1. 두 개 뽑아서 더하기

Level 1. 두 개 뽑아서 더하기

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

 

프로그래머스

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

programmers.co.kr

 

1. 통과

 

2. 통과 코드

 

3. 해석

주어진 배열에서 순서를 고려하지 않고 2개를 뽑는 조합 문제다.

 

4. 풀이

(1) 백트래킹 방법으로 조합을 구현했다.

     numbers : 이 배열 안의 요소들을 뽑는다.

     visited : numbers의 해당 인덱스 요소가 뽑혔으면 true 뽑히지 않았으면 false.

     start : 인덱스 0부터 하나씩 뽑는다.

     n : n개의 요소들 중

     r : r개를 뽑는다.

(2) 문제 예시에서 2개를 뽑아 더했을 때, 더한 값이 중복이면 answer에 중복으로 추가하지 않는다.

     따라서 중복을 허용하지 않는 HashSet을 사용해서 중복을 저장하지 않는다.

(3) 문제 조건에서 2개씩 더한 값을 오름차순으로 반환하라 했으니

     Collections.sort 메소드를 사용하기 위해 HashSet을 List로 만들고, 정렬한다.