728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.io.*;
import java.util.*;
class Solution {
static boolean visited[];
static int number = 0;
static List<Integer> list = new ArrayList<>();
public List<Integer> solution(int[] numbers) {
visited = new boolean[numbers.length];
for(int i=0; i<numbers.length; i++){
if(!visited[i]){
check(numbers, i, 1, numbers[i]);
}
}
Collections.sort(list);
return list;
}
static void check(int[] numbers, int i, int count, int number){
visited[i] = true;
if(count == 2){
if(!list.contains(number)){
list.add(number);
}
return;
}
for(int j=0; j<numbers.length; j++){
if(i!=j && !visited[j]){
visited[j] = true;
check(numbers, j, count+1, number+numbers[j]);
visited[j] = false;
}
}
}
}
백트래킹으로 구현해 봤다.
중복체크와 정렬을 위해 list 사용했다.
728x90