문제 바로가기> 백준 17211번: 좋은 날 싫은 날
파이썬의 반올림은 반올림 하려는 수가 올림, 내림했을 때 동일하게 차이가 나는 경우에는 짝수 값으로 반올림 하는 "ROUND_HALF_EVEN" 방식을 사용한다는 점을 주의해야한다. 그래서 따로 반올림 함수를 구현하여 사용하였다.
ex) 0.5-> 0
ex) 1.5-> 2
def roundUp(num):
if num - int(num) < 0.5:
return int(num)
else:
return int(num)+1
def solution():
N, emotion = map(int, input().split())
prob = list(map(float, input().split()))
prob_g = []
prob_b = []
if emotion:
prob_g.append(prob[2])
prob_b.append(prob[3])
else:
prob_g.append(prob[0])
prob_b.append(prob[1])
for i in range(N-1):
prob_g.append(prob_g[i]*prob[0]+prob_b[i]*prob[2])
prob_b.append(prob_g[i]*prob[1]+prob_b[i]*prob[3])
print(roundUp(prob_g[-1]*1000))
print(roundUp(prob_b[-1]*1000))
solution()
더 간단하게 초기화가 가능하다.
def roundUp(num):
if num - int(num) < 0.5:
return int(num)
else:
return int(num)+1
def solution():
N, emotion = map(int, input().split())
prob = list(map(float, input().split()))
prob_g = [1-emotion]
prob_b = [emotion]
for i in range(N):
prob_g.append(prob_g[i]*prob[0]+prob_b[i]*prob[2])
prob_b.append(prob_g[i]*prob[1]+prob_b[i]*prob[3])
print(roundUp(prob_g[-1]*1000))
print(roundUp(prob_b[-1]*1000))
solution()