관리 메뉴

JIE0025

[구름][난이도1] 의좋은 형제 : 파이썬(python) 본문

Algorithm/구름

[구름][난이도1] 의좋은 형제 : 파이썬(python)

Kangjieun11 2022. 10. 30. 19:45
728x90

 

 

 

https://level.goorm.io/exam/49088/%EC%9D%98%EC%A2%8B%EC%9D%80-%ED%98%95%EC%A0%9C/quiz/1

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io

 

정답률이 높아서 풀어봤다 ㅋㅋㅋ 자바로도 풀어봐야지

 

 

문제 : 의좋은 형제

 

 

✅ 풀이과정

하루에 한번 번갈아가며, 서로에게 절반씩 준다고 했을 때

D번째 날엔 진우와 선우가 얼만큼을 갖고있는지를 출력하면 되는 문제이다. 

 

만약 갖고있는 식량의 양이 홀수일 경우 식량을 통채로 넘겨준다고 하니 그것만 포인트로 기억하면 될 것 같다. 

 

 

어떤 사람(one)이 다른 사람(other)에게 식량을 줄 때, 주는 양을 계산하면 다음과 같다. 

( one // 2 ) + (one % 2)

 

즉 어떤 사람(one)에게서 저만큼을 빼주고, 다른 사람(other)에겐 더해주기만 하면 된다.

 

첫쨰날엔 진우가, 둘째날엔 선우가, 셋째날엔 진우가 본인의 것을 나눠주려고 하므로

진우 ⏩선우 ⏩ 진우 ... 순서이고, 반복문으로 돌려서 d번째 되는 날의 n1과 n2를 출력하면 끝!

 

 

 

✅ 정답코드

import sys
input = sys.stdin.readline 

n1, n2 = map(int,input().split())
d = int(input())
def divide_remind(one, other):
	return (one-(one//2 + one%2), other + (one//2 + one%2))
					
for i in range(1, d+1, 1):
	if i%2 == 1 :
		n1,n2 = divide_remind(n1,n2)
	else: 
		n2,n1 = divide_remind(n2,n1)
	
print(n1, n2)