관리 메뉴

솜씨좋은장씨

[BaekJoon] 1193번 : 분수찾기 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1193번 : 분수찾기 (Python)

솜씨좋은장씨 2022. 6. 7. 11:48
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 분수찾기 입니다.

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

👨🏻‍💻 문제풀이

입력 받은 X에서 1부터 1씩 증가시킨 값을 빼줍니다.
계속 값을 빼주다가 X 가 빼려는 값보다 작을 경우 멈춰줍니다.
while X > line:
    X -= line
        
    line += 1​

그러면 이때 빼려고 했던 값이 몇번째 라인인지를 판단할 수 있는 값 입니다.
그럼 그 값을 활용하여 분모가 될 값, 분자가 될 값 숫자 목록을 만들어 줍니다.
하나 목록은 1~라인 번호 / 하나는 라인번호~1 로 만들어줍니다.
range_num_1 = list(range(1, line+1))
range_num_2 = range_num_1[::-1]​

짝수 번째 라인일 경우에는
분자를 1~라인번호 목록에서 X-1 번째 값을 분모를 라인번호~1 목록에서 X-1번째 값을
홀수 번째 라인일 경우에는
분자를 라인번호~1 목록에서 X-1 번째 값을 분모를 1~라인번호 목록에서 X-1번째 값을
if line % 2 == 0:
    answer = f"{range_num_1[X-1]}/{range_num_2[X-1]}"
else:
    answer = f"{range_num_2[X-1]}/{range_num_1[X-1]}"​

정답으로 합니다.

👨🏻‍💻 코드 ( Solution )

def find_fraction(X):
    line = 1
    
    while X > line:
        X -= line
        
        line += 1
    
    range_num_1 = list(range(1, line+1))
    range_num_2 = range_num_1[::-1]
    
    if line % 2 == 0:
        answer = f"{range_num_1[X-1]}/{range_num_2[X-1]}"
    else:
        answer = f"{range_num_2[X-1]}/{range_num_1[X-1]}"
        
    return answer


if __name__ == "__main__":
    X = int(input())
    print(find_fraction(X))

 

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments