백준 #15 (구현) - 분수찾기 1193번

ims·2021년 7월 10일
0

백준 문제풀이

목록 보기
14/17

📌 문제

지그재그로 분수가 주어질 때, 해당 순서의 분수를 찾는 문제

https://www.acmicpc.net/problem/1193

📌 사고과정

🔥 실수

처음에는

이런식의 지그재그라고 생각했었다.

허나 문제를 다시 읽어보니 ( 코드를 제출하고 나서, 틀리고나서 다시 확인해보니 )
위와 같은 지그재그였다.

문제를 똑바로 읽는 것이 정말 중요하다.

🔥 아이디어

지그재그는 두 방법으로 이루어진다.

  1. 아래로 내려갔다면, 분모가 1일때까지 내려간다.
  2. 방향이 아래였던 상태에서 분모가 1이라면, 분자에 +1을 한다.
  3. 방향을 위로 바꾼다.

위로 올라갈 때도 로직은 똑같다. 방향만 다를 뿐이다.

  1. 위로 올라갔다면, 분자가 1일때까지 올라간다.
  2. 분자가 1이라면 분모에 1을 더해준다.
  3. 방향을 아래로 바꾼다.

그렇다면 방향을 알려줄 변수가 필요하다.
나는 flag로 방향을 설정했다.

만약 flag == True 이면 방향을 아래로, flag == False 라면 방향을 위로 설정했다.

🔥 주의점

while count!=n : 조건으로 while loop를 돌릴 건데, while loop안에 다시 while loop가 돌으므로 중간 조건으로 count!=n을 넣어주어야 한다.

📌 코드

import sys

n = int(input())

if n==1:
    print("1/1")
    sys.exit(0)

son = 1
mom = 2
count = 2

# flag
# True = down
# False = up
flag = True

while count!=n:
    if flag:
        while mom!=1 and count!=n:
            son+=1
            mom-=1
            count+=1
        if count==n:
            break
        else:
            son+=1
            count+=1
            flag=False
    else:
        while son!=1 and count!=n:
            son-=1
            mom+=1
            count+=1
        if count==n:
            break
        else:
            mom+=1
            count+=1
            flag=True
print(str(son) + "/" + str(mom))
profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글