[BaekJoon] - 1193 분수찾기
글 작성자: Universe7202
아래 표 처럼 번호 순서대로 규칙성을 가지고 있다. 1은 (1,1)로 시작하고, 2는 (1,2), 3은 (2,1), 4는 (3,1), 5는 (2,2)... 라고 필자는 좌표로 설정하고 코딩을 했다.
만약 사용자가 5라고 입력했을때, 출력되어야 하는 좌표는 (2,2) 이고 답은 2/2 이다.
1 > 5
1 + 2 > 5
1 + 2 + 3 > 5
1 + 2 + 3 일때 사용자가 입력한 값보다 처음으로 크므로, 이때 i=3이라고 하자.
i가 홀수 일때는 (1,i)에서, 즉 6에서 x축으로 -1, y축으로 +1해서 5의 위치는 (1, i) + (1,-1) = (2,2) 라는 결과를 얻을 수 있다.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
1 | 1 | 2 | 6 | 7 | 15 | 16 | 28 | 29 |
2 | 3 | 5 | 8 | 14 | 17 | 27 | 30 | ... |
3 | 4 | 9 | 13 | 18 | 26 | 31 | ... | ... |
4 | 10 | 12 | 19 | 25 | 32 | ... | ... | ... |
5 | 11 | 20 | 24 | 33 | ... | ... | ... | ... |
6 | 21 | 23 | 34 | ... | ... | ... | ... | ... |
7 | 22 | 35 | ... | ... | ... | ... | ... | ... |
8 | 36 | ... | ... | ... | ... | ... | ... | ... |
만약 사용자가 9 라는 값을 입력했을때,
1 > 9
1 + 2 > 9
1 + 2 + 3 + 4 > 9
i=4일때 처음으로 사용자가 입력한 값보다 크다.
i가 짝수 일때, (i,1)에서, 즉 10에서 x축으로 +1, y축으로 -1해서 9의 위치는 (i,1) + (1,-1) = (2,3) 이라는 결과를 얻을 수 있다.
아래는 python3으로 코딩한 것이다.
#!/bin/python3
count = int(input(""))
tmp = 0
for i in range(1, 10000000):
tmp += i
if tmp > count:
if i%2 == 0:
point = [i, 1]
while tmp != count:
point[0] -= 1
point[1] += 1
tmp -= 1
break
elif i%2 == 1:
point = [1, i]
while tmp != count:
point[0] += 1
point[1] -= 1
tmp -= 1
break
elif tmp == count:
if i%2 == 0:
point = [i,1]
break
else:
point = [1, i]
break
print(str(point[0])+"/"+str(point[1]))
'BaekJoon' 카테고리의 다른 글
1475번 - 방 번호 python (0) | 2019.10.22 |
---|---|
[BaekJoon] - 10773 제로 (0) | 2019.10.13 |
[BaekJoon] - 10871 x보다 작은 수 (0) | 2019.10.13 |
[BaekJoon] - 10936 base64 디코딩 (0) | 2019.10.12 |
[BaekJoon] - 10935 base64 인코딩 (0) | 2019.10.12 |
댓글
이 글 공유하기
다른 글
-
1475번 - 방 번호 python
1475번 - 방 번호 python
2019.10.22 -
[BaekJoon] - 10773 제로
[BaekJoon] - 10773 제로
2019.10.13 -
[BaekJoon] - 10871 x보다 작은 수
[BaekJoon] - 10871 x보다 작은 수
2019.10.13 -
[BaekJoon] - 10936 base64 디코딩
[BaekJoon] - 10936 base64 디코딩
2019.10.12