코테/코드트리
[코드트리/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 |
반응형