Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [1193] - 분수찾기

yaebb_82 2022. 8. 24.

 

문제

 

 

 

작성한 코드

import sys

input = sys.stdin.readline

X = int(input())
end = 0
n = 0

while X > end:
    n += 1
    end += n

if (n%2)==0:
    a = n
    b = 1
    while X < end:
        a -= 1
        b += 1
        end -= 1
else:
    a = 1
    b = n
    while X < end:
        a += 1
        b -= 1
        end -= 1

print(f"{a}/{b}")
*규칙 찾기
1번째 - 1/1
2번째 - 1/2 2/1
3번째 - 3/1 2/2 1/3
4번째 - 1/4 2/3 3/2 4/1
5번째 = 5/1 4/2 3/3 2/4 1/5
...

대각선 방향으로 지그재그로 진행되는 것을 볼 수 있다.
개수는 한 줄에 차례로 1개, 2개, 3개 ... 차례로 늘어나는 것을 볼 수 있다.

뒤에서 부터 봤을 때,
홀수 줄은 분자가 1씩 증가하고, 분모는 1씩 감소하는 것을 볼 수 있다.
짝수 줄은 분자가 1씩 감소하고, 분자는 1씩 증가하는 것을 볼 수 있다.

- sys.stdin.readline을 input에 할당하여 사용하였다.

- input()으로 문자를 입력받고, int형으로 형변환하여 X에 할당하였다. (X는 X번째 분수를 나타냄)

- [ X = 입력값 / end = 각 줄의 마지막 번호 / n = 줄 수 / a = 분자 / b = 분모 ] 를 나타낸다.

- end와 n의 값은 0으로 초기화 시킨다.

- while X > end: 입력값 X의 값이 end보다 클 동안 반복문 while문을 돌린다.

- while문이 돌기 시작하면, n에 +1을 해준다. (1번째 부터 시작) 그리고 end에 n을 더해주어 다시 end에 할당해준다. (n번째 줄의 마지막 분수의 번호 end에 할당)

- if (n%2)==0: ~ else: ~ n이 짝수 줄일 때와 홀수 줄일 때 경우를 나누어 생각하고, 각 줄의 마지막(end)를 기준으로 생각한다.

- 짝수 줄일 경우,

   분자(a)는 1, 분모(b)는 n으로 초기화 시켜준다.

   while X < end: X가 end 미만일 경우에만 반복문 while문을 돌린다.

   돌릴 때, a는 1씩 감소시키고, b는 1씩 증가시키고, end 값은 1씩 감소시킨다.

- 홀수 줄일 경우,

  분자(a)는 n, 분모(b)는 1으로 초기화 시켜준다.

  while X < end: X가 end 미만일 경우에만 반복문 while문을 돌린다.

  돌릴 때, a는 1씩 증가시키고, b는 1씩 감소시키고, end 값은 1씩 감소시킨다.

- 마지막에 print()로 출력할 때, f-string을 사용하여 'a/b' 형태로 출력한다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 [10250] - ACM 호텔  (0) 2022.08.25
백준 [2869] - 달팽이는 올라가고 싶다  (0) 2022.08.24
백준 [2292] - 벌집  (0) 2022.08.24
백준 [1712] - 손익분기점  (0) 2022.08.23
백준 [1316] - 그룹 단어 체커  (0) 2022.08.23

댓글