Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- github
- dfs
- Material
- 파이썬
- 백준
- w3school
- Unreal Engine 5
- dynamic
- Class
- UE5
- loop
- W3Schools
- Programming
- 프로그래밍
- python
- 시작해요 언리얼 2022
- Tutorial
- String
- 오류
- DP
- C#
- Unity
- 재귀
- Basic
- 문제풀이
- c++
- guide
- parameter
- 기초
- Algorithm
Archives
- Today
- Total
행복한 개구리
백준 21.12.05. 1193번 - 분수찾기 본문
X = int(input())
layer = 0
while X>layer:
X-=layer
layer+=1
if layer % 2 == 0:
numerator=X
denominator=layer-X+1
else:
numerator = layer-X+1
denominator = X
result = str(numerator)+"/"+str(denominator)
print(result)
- 줄의 블록 수는 공차가 1인 등차수열로 증가합니다.
- 그리고 짝수 줄의 시작은 분모가 크고 분자가 작은 진분수이며 홀수 줄의 시작은 분모가 작고 분자가 큰 가분수입니다.
- n번째 줄의 블록 수는 n + 1의 값을 가집니다.
- 우선 몇 번째 layer인지 알아야하기 때문에 줄을 구하는 식을 먼저 세워줍니다.
- while반복문을 사용하여 X가 layer보다 클 때 반복하도록 설정하고 X는 layer만큼 계속 빼줍니다.
- "줄"을 layer라고 하겠습니다.
- 반복문이 실행됐다면 X는 그 layer보다 높은 layer에 있다는 뜻이므로 layer도 1만큼 더해줍니다.
- 그러고 나면 X가 layer보다 작아지게 되는데 이때의 나머지가 바로 해당 layer에서 목표 블록의 위치입니다.
- 따라서 홀수, 짝수 줄의 시작하는 방식이 다르므로 if문으로 두 가지 분기를 나눠주어 시작합니다.
- 짝수라면 분모가 크기 때문에 layer - X(블록 위치) + 1이고 분자는 1씩 차례대로 증가하므로 X입니다.
- 홀수는 이 반대로 작성하면 됩니다.
- 그리고 이 분자 분모를 모아 출력하기 위해 str형식으로 형변환을 해준 뒤 출력해줍니다.
'Algorithm > BaekJoon' 카테고리의 다른 글
백준 21.12.06. 10250번 - ACM호텔 (0) | 2021.12.06 |
---|---|
백준 21.12.06. 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.12.06 |
백준 21.11.26. 2292번 - 벌집 (0) | 2021.11.26 |
백준 21.11.25. 1712번 - 손익분기점 (0) | 2021.11.25 |
백준 21.11.25. 1316 - 그룹 단어 체커 (0) | 2021.11.25 |