백준 17211번: 좋은 날 싫은 날
문제
문제 바로가기> 백준 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()
Author And Source
이 문제에 관하여(백준 17211번: 좋은 날 싫은 날), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@danbibibi/백준-17211번-좋은-날-싫은-날저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)