1193번 - 분수 찾기(파이썬)

지환·2023년 8월 24일
0

백준(python)

목록 보기
14/67

출처 | https://www.acmicpc.net/problem/1193

코드

input_num = int(input())

line = 0
max_num = 0

while input_num > max_num:
    line += 1
    max_num += line
    
gap = max_num - input_num


if line % 2 == 0:
    top = line - gap #문자
    under = gap + 1
    
else:
    top = gap+1
    under = line - gap
    
print(f'{top}/{under}')
    

해당 블로그를 참고하여 작성했다.

풀이

  1. while 반복문으로 입력받은 정수가 몇 번째 사선 라인에 있는지 확인한다.
input_num = int(input())

line = 0  # 사선 라인
max_num = 0  # 입력된 숫자(input_num 변수)의 라인에서 가장 큰 숫자
while input_num > max_num:
    line += 1  
    max_num += line  
  1. 사선 라인이 짝수인지 홀수인지에 따라 분수가 찾는 규칙이 달라진다.

gap = max_num - input_num 
if line % 2 == 0:  # 사선 라인이 짝수번째 일 때
    top = line - gap  #분자
    under = gap + 1  #분모
else :  # 사선 라인이 홀수번째 일 때
    top = gap + 1  #분자
    under = line - gap  #분모

1부터 입력 받는 수까지의 정수는 사선 라인을 따라서 지그재그로 배열된다. 사선 라인이 짝수번째이면 오른쪽 끝에서 왼쪽 아래 사선 방향으로 숫자가 커지고, 사선 라인이 홀수번째이면 왼쪽 끝에서부터 오른쪽 위 사선 방향으로 숫자가 커진다.

위와 같은 정수의 배열을 이용해서 분수의 분자와 분모를 구하는 식을 작성하였다. 우선 해당 사선 라인에서 제일 큰 수에서 입력받은 수를 빼는 방법으로 gap이라는 변수를 구했다. 그리고 이 gap변수에 1을 더한 값과 line 변수에서 gap 변수를 뺀 값을 이용해서 분수의 분자와 분모를 구할 수 있다.

profile
아는만큼보인다.

0개의 댓글