코깽이의 코딩일기

SWEA 11688. Calkin-Wilf tree 1 본문

PS/SWEA

SWEA 11688. Calkin-Wilf tree 1

코깽이 2023. 11. 10. 01:17
반응형

Link

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&problemLevel=2&problemLevel=3&contestProbId=AXgZSOn6ApIDFASW&categoryId=AXgZSOn6ApIDFASW&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=3


문제


 

내가 제출한 코드

from math import gcd

t = int(input())

for i in range(1, t+1):
    
    a = 1
    b = 1
    t = list(input())

    for j in t:
        if j == "L":
            b = a+b
        elif j == "R":
            a = a+b

    check = gcd(a, b)

    a = int(a/check)
    b = int(b/check)

    print("#{} {} {}".format(i, a, b))

 

생각해낸 로직

1. input값을 list나 str 형식으로 받고 하나씩 순회한다.

2. L과 R인지 판별하는 if문을 이용해서 a와 b의 값을 변경시킨다.

3. a,b를 기약분수로 만든다. 해당 과정에서 python math 라이브러리에 있는 gcd() 함수를 이용해서 최대 공약수를 구한다.

4. 최대 공약수로 a,b를 각각 나눠주고 원하는 출력형식인 int타입으로 형변환을 진핸다.


 

반응형