[백준] 일곱 난쟁이

2024. 5. 5. 20:34·코딩테스트 연습/백준
728x90

 

문제

왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.

아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.

아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.

 

입력

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

 

출력

일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.

 

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int[] nanjaeng = new int[9];
        for(int i=0; i<9; i++) {
            nanjaeng[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(nanjaeng);

        int sum = Arrays.stream(nanjaeng).sum();

        int falseNanjaeng1 = 0;
        int falseNanjaeng2 = 0;

        // 전체 합에서 두 개의 합을 뺐을 때 100이 나오는 경우의 수
        a:for(int i=0; i<9; i++) {
            for(int j=1; j<9; j++) {
                if(sum - (nanjaeng[i] + nanjaeng[j]) == 100) {
                    falseNanjaeng1 = nanjaeng[i];
                    falseNanjaeng2 = nanjaeng[j];
                    break a;
                }
            }
        }

        for(int i=0; i<9; i++) {
            if (nanjaeng[i] != falseNanjaeng1 && nanjaeng[i] != falseNanjaeng2)
                System.out.println(nanjaeng[i]);
        }

        br.close();
    }
}

 

9명의 난쟁이에서 7명의 난쟁이를 추려내야 하기 때문에 거짓 난쟁이는 두 명이라는 것을 알 수 있다. 따라서 전체 합에서 100을 뺀 값이 2명의 난쟁이의 합이면 거짓 난쟁이기 때문에 2명의 합을 구하는 방식으로 작성하였다.

 

 

출처: 백준, https://www.acmicpc.net/problem/2309
728x90
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 연습 > 백준' 카테고리의 다른 글

[백준] 요세푸스 문제  (0) 2024.06.18
[백준] 에디터  (1) 2024.06.17
[백준] 두 수의 합  (1) 2024.06.16
[백준] 구간 합 구하기 4  (0) 2024.05.16
[백준] 번호표 교환  (0) 2024.04.21
'코딩테스트 연습/백준' 카테고리의 다른 글
  • [백준] 에디터
  • [백준] 두 수의 합
  • [백준] 구간 합 구하기 4
  • [백준] 번호표 교환
hxxzz
hxxzz
개발새발 안 되게 개발 노력 중
  • hxxzz
    개발새발
    hxxzz
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • Java (3)
      • Back-End (9)
        • Spring Boot (7)
        • DevOps (1)
        • Redis (1)
      • Computer Scrience (4)
        • Data Structrue (4)
        • Algorithm (0)
      • SQLD (3)
      • 코딩테스트 연습 (85)
        • Programmers (30)
        • 백준 (15)
        • etc. (0)
        • 99클럽 (40)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    SpringBoot
    프로그래머스
    LeetCode
    코딩테스트 준비
    SQLD
    dfs
    자료구조
    N+1 문제
    개발자 취업
    백준
    jpa
    redission
    til
    java
    Stack
    스택
    99클럽
    BFS
    Spring Boot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
hxxzz
[백준] 일곱 난쟁이
상단으로

티스토리툴바