백준 1193 -분수 찾기(파이썬)

박진우·2022년 9월 6일
0

알고리즘

목록 보기
22/89
post-thumbnail

💡 백준 1193

◽ 문제




◽ 입력 & 출력




◽ 풀이

  • 문제의 설명에서 "1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수"라고 했기 때문에 배열을 살펴보면 지그재그 형태이다.

    즉 대각선으로 각 줄을 나눠서 보면 [1/1], [1/2, 2/1], [3/1, 2/2, 1/3], [1/4, 2/3, 3/2, 4/1] 이렇게 나타낼 수 있다.

  • 각 줄을 line 이라고 하고 보면
    line 1 = 1/1
    line 2 = 1/2, 2/1
    line 3 = 3/1, 2/2, 1/3
    line 4 = 1/4, 2/3, 3/2, 4/1

    line이 증가할 때마다 1개씩 증가 하고있다.


  • while문에서 X>line일때 반복하도록 한 이유는 9,10번째 줄을 보면 X는 line을 계속빼고있다. 그리고 line은 1씩증가하고있다.

  • 그러면 만약 X=3 일 때 while문에서 3>1이 참 이되어 while문에 들어가고, X = 3-1 = 2, line+1 = 2가된다.

  • 그 다음 while문에서 X = 2 > line = 2거짓이 돼서 while문을 빠져나오게 되는 것이다.

3-1=2가되고 ,line=2가된다. 즉 2번째 라인에 2번요소라는 것이다.

따라서

X -= line을 하면 각 line에서 n이 몇번째에 위치하는지 알 수 있다.


최종 풀이

그래도 지그재그 특성을 무시할 수 없기에 짝수 홀수 를 나눠줘야한다.

0개의 댓글