코테/코드트리

[코드트리/NOVICE MID] 개발자의 능력 3 (JAVA)

imname1am 2023. 11. 11. 21:07
반응형

🔺 문제

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

 

🔺 코드

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
32
33
34
35
36
37
38
39
import java.util.*;
import java.io.*;
 
public class Main {
    static int[] arr = new int[6];
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
        for(int i = 0 ; i < 6 ; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
 
        int ans = Integer.MAX_VALUE;
        for(int i = 0 ; i < 6 ; i++) { // 1번째 팀원
            for(int j = i + 1 ; j < 6 ; j++) { // 2번째 팀원
                for(int k = j + 1 ; k < 6 ; k++) { // 3번째 팀원
                    ans = Math.min(ans, getDiff(i, j, k));
                }
            }
        }
 
        System.out.println(ans);
    }
 
    private static int getDiff(int x, int y, int z) {
        int sum1 = arr[x] + arr[y] + arr[z];
        int sum2 = 0;
 
        for(int i = 0 ; i < 6 ; i++) { // sum2 값 구하기
            if(i != x && i != y && i != z) {
                sum2 += arr[i];
            }
        }
 
        return Math.abs(sum2 - sum1);
    }
}
cs

 

 

 

🧩  해결 아이디어

• 완전탐색

- 첫 번째, 두 번째, 세 번째 팀원을 구하고 이 때의 합 sum1과 전체 합 - sum1한 값 = sum2의 차이를 비교한다.

- 이 때 차이가 최솟값인 경우, 갱신한다.

 

 


🔺 다른 풀이들

- 다른 팀의 합 구하는 과정이 조금 다르게 작성하면 이렇게....

1
2
3
4
5
6
7
8
9
10
11
public static int diff(int i, int j, int k) {
    int totalSum = 0;
 
    for(int l = 0; l < n; l++)
        totalSum += arr[l];
        
    // 두 번째 팀원의 합 = 전체 - 첫 번째 팀원의 합
    int sum1 = arr[i] + arr[j] + arr[k];
    int sum2 = totalSum - sum1;
    return Math.abs(sum1 - sum2);
}
cs

 

 


💬 느낀 점

빠르게 풉시다...

 

1회독 2회독 3회독 4회독 5회독
V        

 

반응형