728x90
반응형
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 몇 번 분수를 출력할 것인지 입력받는다. X = int(sys.stdin.readline())
- 대각선 별로 각 라인의 누적합만큼 번호를 갖는다. 또한 각 라인의 분모, 분자의 합은 라인 수에 1을 더한 값이다. 하여 분수를 구하려면 일단 몇 번 라인에 있는 분수인지 알아야 한다. 하여 분수의 개수와 라인 번호를 구한다.
- 분수의 개수를 구하기 위한 변수를 생성하고 초기화한다. count = 0
- 라인 번호를 구하기 위한 변수를 생성하고 초기화한다. line = 1
- 원하는 시점에서 종료하기 위해 무한 반복문을 사용한다. while (True)
- 라인 번호가 해당 라인에 존재하는 분수의 개수이므로 라인 번호를 분수의 개수에 더한 값이 입력받은 값보다 같거나 크면 해당 라인에 분수가 존재하므로 종료한다. if (count + line >= X): break
- 종료되지 않았다면 분수 개수에 라인 번호에 존재하는 분수의 개수를 더한다. count += line
- 라인 번호를 1 증가시켜 다음 라인으로 이동한다. line += 1
- 각 라인 분수의 분모, 분자의 합을 저장할 변수를 생성하고 라인 번호의 1을 더한 값을 저장한다. lineSum = line + 1
- 만약 라인 분수의 분모, 분자의 합이 짝수이면 if (lineSum % 2 == 0)
- 해당 라인의 분수는 분모가 1부터 시작하여 증가되는 순으로 번호가 매겨져 있다. 따라서 분자를 합에서 분모의 값이 1을 빼준 값부터 시작하여 1까지 반복한다. for i in range(lineSum - 1, 0, -1)
- 분수 번호를 1 증가시켜 준다. count += 1
- 만약 분수 번호가 찾으려는 분수의 번호이면 분수를 출력한다. if (count == X): print(f"{i}/{lineSum - i}")
- 분수를 찾았으므로 종료한다. break
- 반면에 라인 분수의 분모, 분자의 합이 홀수이면 else
- 해당 라인의 분수는 분자가 1부터 시작하여 증가되는 순으로 번호가 매겨져 있다. 따라서 1부터 합에서 분모의 최솟값인 1을 빼준 값까지 반복한다. for i in range(1, lineSum)
- 분수 번호를 1 증가시켜 준다. count += 1
- 만약 분수 번호가 찾으려는 분수의 번호이면 분수를 출력한다. if (count == X): print(f"{i}/{lineSum - i}")
- 분수를 찾았으므로 종료한다. break
반응형
3. 소스코드
import sys
X = int(sys.stdin.readline())
count = 0
line = 1
while (True):
if (count + line >= X):
break
count += line
line += 1
lineSum = line + 1
if (lineSum % 2 == 0):
for i in range(lineSum - 1, 0, -1):
count += 1
if (count == X):
print(f"{i}/{lineSum - i}")
break
else:
for i in range(1, lineSum):
count += 1
if (count == X):
print(f"{i}/{lineSum - i}")
break
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2667번 : 단지번호붙이기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.15 |
---|---|
[백준] 2606번 : 바이러스 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.15 |
[백준] 2609번 : 최대공약수와 최소공배수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.13 |
[백준] 1003번 : 피보나치 함수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.13 |
[백준] 2231번 : 분해합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.13 |
[백준] 1181번 : 단어 정렬 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.13 |
[백준] 9095번 : 1, 2, 3 더하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.12 |
[백준] 2178번 : 미로 탐색 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.11 |