문제 출처
조선시대 수도 한양에서 한참 떨어진 곳에 위치한 한 고을에는 의좋은 형제가 살았다. 서로를 끔찍이 아낀다고 소문난 진우와 선우 형제는 항상 서로에게 퍼주지 못해 안달이 난 상태였다. 의리있는 만큼 성실했던 두 형제는 열심히 일하여 번 돈으로 식량을 어마어마하게 비축하여 가지고 있었다.
그러던 어느날, 진우는 밤 중에 몰래 집을 나와 자신의 식량 절반을 선우에게 가져다 주었다. 이 사실을 안 선우는 다음날 밤, 몰래 집을 나와 마찬가지로 자신의 식량 절반을 진우에게 가져다 주었다. 가지고 있는 식량의 양이 홀수라서 반으로 나눌 수 없는 경우, 그 식량을 통째로 넘겨준다. 만약 처음 두 형제가 모두 식량을 100씩 가지고 있다면 셋째 날까지의 변화는 다음과 같다.
처음 상태: 진우 100, 선우 100
첫째 날: 진우 50, 선우 150
둘째 날: 진우 125, 선우 75
셋째 날: 진우 62, 선우 138
...
매일 밤 계속되는 이 모습을 지켜본 동네 꼬마는 문득 D번째 날에는 두 형제에게 식량이 얼마나 남아있을지 궁금해졌다. D번째 날에 진우와 선우는 식량을 얼마나 갖고 있을지 출력하라.
입력
첫째 줄에는 진우와 선우가 처음 갖고 있는 식량의 양 , 가 정수로 주어진다. (단, ))
둘째 줄에는 두 형제의 식량의 양을 알고 싶은 날 D가 정수로 주어진다. (단, ))
출력
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 |
댓글