구름 LEVEL JAVA - 의좋은 형제 (난이도 1)

» algorithm

구름 난이도 1 의좋은 형제

코드

import java.io.*;
class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String input = br.readLine();
		
		int M1 = Integer.parseInt(input.split(" ")[0]);	// 진우
		int M2 = Integer.parseInt(input.split(" ")[1]);	// 선우
		int D = Integer.parseInt(br.readLine());				// 날짜
		
		for( int i=0; i<D; i++ ) {
			
			// 진우
			if( i%2 == 0 )
			{
				// 짝수
				if( M1%2 == 0 ) {
					M1 = M1/2;
					M2 = M2 + M1;
				} else {
					M1 = M1/2;
					M2 = M2 + M1 + 1;
				}
			}
			// 선우
			else
			{
				// 짝수
				if( M2%2 == 0 ) {
					M2 = M2/2;
					M1 = M1 + M2;
				} else {
					M2 = M2/2;
					M1 = M1 + M2 + 1;
				}
			}
			
		}
		
		System.out.println( M1 + " " + M2 );
	}
}

풀이

두번의 입력을 받을때 첫번째는 진우(M1) , 선우(M2) / 두번째는 날짜(D)

날짜까지 for 문을 돌며 진우,선우의 식량을 확인

진우,선우의 입력 값은 1보다는 크거나 같고 10의 4승보단 작거나 같다

날짜의 입력 값은 1보다는 크거나 같고 100 보다 작거나 같다


  1. M1 이 짝수일 때 M1은 절반으로 변경, M2는 이미 나눈 M1을 더한다.
  2. M1 이 홀수일 때 위와 동일하나 [ 문제 아래에 있는 입력란 ] 을 보면 1 보다 크거나 같다라서 + 1을 해준다.
  3. M2 도 위와 동일한 로직.