anott
기록
anott
  • 분류 전체보기
    • 오라클
    • SQL
    • 알고리즘
      • 백준저지
      • 프로그래머스
      • SWEA
    • 개발 관련
    • 프론트엔드
      • TypeScript, Next.js
      • React 공식문서 읽기
hELLO · Designed By 정상우.
anott

기록

백준저지 2309번 일곱 난쟁이
알고리즘/백준저지

백준저지 2309번 일곱 난쟁이

2021. 8. 27. 23:27

출처: https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 

제출 날짜: 2021년 8월 27일 금요일

 

 

 

생각

조합으로 풀었는데 막판에 틀렸다. 잘못한 게 없어서 질문글을 검색해보니 나처럼 93%쯤에 틀린 사람이 있었다. 해당 글(https://www.acmicpc.net/board/view/57583)의 답변을 보고 실행해보니 실제로 답이 여러 개인 경우, 나는 답 여러 개를 출력하고 있다는 걸 알게 되었다. 문제에도 '가능한 정답이 여러 가지인 경우에는 아무거나 출력한다'라고 적혀있는데 그걸 보고도 그냥 답이 여러 개일 수가 있구나 하고 넘겨서 발생한 문제였다. 다음부터는 문제를 조금 더 꼼꼼히 읽어야겠다.

 

 

 

코드

// 출처: 백준저지 2309번 일곱 난쟁이 https://www.acmicpc.net/problem/2309

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

public class BOJ2309 {

    static int[] dwarf = new int[9]; // 입력받을 아홉 난쟁이
    static int[] seven = new int[7]; // 임시로 저장할 일곱 난쟁이
    static int[] answer = new int[7]; // 답이 될 일곱 난쟁이

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < 9; i++) {
            dwarf[i] = sc.nextInt();
        }
        Arrays.sort(dwarf); // 입력받은 아홉 난쟁이 정렬
        combination(0, 0, 0); // 조합

        for (int a : answer) { // 답 출력
            System.out.println(a);
        }

    }

    private static void combination(int cnt, int start, int sum) {
        if (cnt == 7) {
            if (sum == 100) { // 합이 100일 때 답에 해당 일곱 난쟁이를 저장
                for (int i = 0; i < 7; i++) {
                    answer[i] = seven[i];
                }
            }
            return;
        }

        for (int i = start; i < 9; i++) {
            seven[cnt] = dwarf[i];
            combination(cnt + 1, i + 1, sum + dwarf[i]);
        }
    }
}

 

 

저작자표시 비영리 (새창열림)

'알고리즘 > 백준저지' 카테고리의 다른 글

백준저지 10163번 색종이  (0) 2021.08.29
백준저지 15656번 N과 M (7)  (0) 2021.08.28
백준저지 2116번 주사위 쌓기  (0) 2021.08.26
백준저지 2527번 직사각형  (0) 2021.08.25
백준저지 2628번 종이자르기  (0) 2021.08.24
    '알고리즘/백준저지' 카테고리의 다른 글
    • 백준저지 10163번 색종이
    • 백준저지 15656번 N과 M (7)
    • 백준저지 2116번 주사위 쌓기
    • 백준저지 2527번 직사각형
    anott
    anott

    티스토리툴바