[붙끝코] 1일차

Burpeeeee·2024년 9월 9일
post-thumbnail

붙을 때까지 끝나지 않는(?) 코딩테스트 챌린지 1일차이다. (붙으면 끝날까...?)
시작이 반이라고 했으니 벌써 반이나 왔다!!
특히 원래 코테 언어를 파이썬을 사용하다가 자바로 사용한
첫 코테라 맘이 새롭다. 🌝
1일차 가보자고.

오늘의 문제
백준 일곱난쟁이

📌 문제 탐색하기

요구 사항:
1. 난쟁이들 키의 합은 100되어야한다.
2. 난쟁이들 7명을 오름차순으로 정렬해야한다.

9명중에 2명 선택 -> 9C2 -> input이 크지 않으므로 완전탐색 선택

📌 코드 설계하기

  1. 문제의 input을 받는다.
  2. 우선 전체 키 누적합을 구한다
  3. 배열을 오름차순으로 정렬한다.
  4. 진짜 난쟁이 7명을 찾을까 or 범인 2명 찾을까-> 2명 찾는게 효율적일 듯
  5. 전체 키- 범인 2명 키 합 == 100
  6. 범인 2명을 제외한 배열을 출력한다.

📌 시도 회차 수정 사항

  1. 처음에 return 작성하지 않아 중복 결과 생성. ->
    return 작성하여 원하는 조건에 부합하면 바로 프로그램 종료

📌 정답 코드

import java.util.Scanner;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 두명을 뽑자 -> sum - 두명의 난쟁이 키의 합 = 100 --> 이 두 난쟁이가 범인
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int[] arr = new int[9];

        for (int i = 0; i < 9; i++) {
            arr[i] = sc.nextInt();
            sum = sum + arr[i];
        }

        Arrays.sort(arr); // 먼저 정렬 

        for (int i = 0; i < 9; i++) {
            for (int j = i + 1; j < 9; j++) {
                if (sum - (arr[i] + arr[j]) == 100) {
                    for (int k = 0; k < 9; k++) {
                        if (k != i && k != j) {
                            System.out.println(arr[k]);
                        }
                    }
                    // 정답을 찾으면 반복문 종료
                    return;
                }
            }
        }
    }
}
profile
? 이 가득하지만 곧 !이 될

0개의 댓글