https://www.acmicpc.net/problem/9037
9037번: The candy war
입력은 표준입력(standard input)을 통해 받아들인다. 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 각각의 테스트 케이스의 첫 줄에는 아이의 인원 N (1 ≤ N ≤ 10)이 주어지고 그 다음 줄에는 각 아이들이 초기에 가지고 있는 사탕의 개수 Ci ( 1 ≤ i ≤ N, 1 ≤ Ci ≤ 30)가 주어진다. 분배 시 C1의 오른쪽에는 C2가, C2의 오른쪽에는 C3가…… 같은 식으로 앉게 되며 CN의 오른쪽에는 C1이 앉게 된다.
www.acmicpc.net
def check(N, C):
for i in range(N):
if C[i] %2 == 1:
C[i] += 1
return len(set(C)) == 1 # True 또는 False
def share(N, C):
temp = [0] * N
for i in range(N):
if C[i] % 2 == 1:
C[i] += 1
C[i] //= 2
temp[(i+1) % N] += C[i]
for j in range(N):
C[j] += temp[j]
def func():
N, C = int(input()), list(map(int, input().split()))
count = 0
while not check(N, C):
share(N, C)
count += 1
print(count)
T = int(input())
for _ in range(T):
func()
func함수 안에서
처음 순환을 시작할때 홀수인지를 체크하는 check함수와
사탕의 반을 오른쪽에 앉은 아이에게 주는 share함수를 부른다
'알고리즘 > 백준 (Pyhthon)' 카테고리의 다른 글
[알고리즘] 백준 2484 주사위 네개 / python (0) | 2020.03.13 |
---|---|
[알고리즘] 백준 2480 주사위 세개 / python (0) | 2020.03.13 |
[알고리즘] 백준 17224 APC는 왜 서브태스크 대회가 되었을까? / python (0) | 2020.02.28 |
[알고리즘] 백준 1932 정수 삼각형 / python, DP (0) | 2020.02.28 |
[알고리즘] 백준 1120 문자열 / python (0) | 2020.02.28 |