백준 17211번: 좋은 날 싫은 날

12286 단어 python백준python

문제

문제 바로가기> 백준 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()

좋은 웹페이지 즐겨찾기