본문 바로가기
Algorithm/Goorm

[Java] 의좋은 형제

by 동그란 혜주 2020. 1. 4.

문제 출처

조선시대 수도 한양에서 한참 떨어진 곳에 위치한 한 고을에는 의좋은 형제가 살았다. 서로를 끔찍이 아낀다고 소문난 진우와 선우 형제는 항상 서로에게 퍼주지 못해 안달이 난 상태였다. 의리있는 만큼 성실했던 두 형제는 열심히 일하여 번 돈으로 식량을 어마어마하게 비축하여 가지고 있었다.

그러던 어느날, 진우는 밤 중에 몰래 집을 나와 자신의 식량 절반을 선우에게 가져다 주었다. 이 사실을 안 선우는 다음날 밤, 몰래 집을 나와 마찬가지로 자신의 식량 절반을 진우에게 가져다 주었다. 가지고 있는 식량의 양이 홀수라서 반으로 나눌 수 없는 경우, 그 식량을 통째로 넘겨준다. 만약 처음 두 형제가 모두 식량을 100씩 가지고 있다면 셋째 날까지의 변화는 다음과 같다.

처음 상태: 진우 100, 선우 100
첫째 날: 진우 50, 선우 150
둘째 날: 진우 125, 선우 75
셋째 날: 진우 62, 선우 138
...

매일 밤 계속되는 이 모습을 지켜본 동네 꼬마는 문득 D번째 날에는 두 형제에게 식량이 얼마나 남아있을지 궁금해졌다. D번째 날에 진우와 선우는 식량을 얼마나 갖고 있을지 출력하라.

입력

첫째 줄에는 진우와 선우가 처음 갖고 있는 식량의 양 img, img가 정수로 주어진다. (단, img))

둘째 줄에는 두 형제의 식량의 양을 알고 싶은 날 D가 정수로 주어진다. (단, img))

출력

D번째 날에 진우, 선우 순서로 갖고 있는 식량의 양을 공백으로 구분하여 출력한다.

입/출력 예시

입력 출력
100 100
4
131 69
70 100
1
35 135
1 1
9
0 2
537 141
11
226 452

완성 코드

import java.io.*;

public class Goorm49088 {
    private static int jinu;
    private static int sunu;
    private static int day;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] brothers = br.readLine().split(" ");
        jinu = Integer.parseInt(brothers[0]);
        sunu = Integer.parseInt(brothers[1]);
        day = Integer.parseInt(br.readLine());

        distribute(true, jinu);

        for (int i = 0; i < day - 1; i++) {
            boolean oddDay = i % 2 == 1;
            int sender = oddDay ? jinu : sunu;
            distribute(oddDay, sender);
        }

        System.out.println(jinu + " " + sunu);
    }

    private static void distribute(boolean oddDay, int total) {
        int temp = total % 2 == 0 ? total / 2 : total / 2 + 1;
        jinu = oddDay ? jinu - temp : jinu + temp;
        sunu = oddDay ? sunu + temp : sunu - temp;
    }
}

문제 출처

'Algorithm > Goorm' 카테고리의 다른 글

[JavaScript] 시험성적 평균과 등급 구하기  (0) 2020.01.04
[Java] 태민이의 취미  (0) 2020.01.03
[JavaScript] 369 게임  (0) 2020.01.03

댓글