처음에 문제 읽고 이해를 못해서 책을 좀 더 열심히 읽어야 하나 했던 문제.
문제를 풀고 익숙해지다 보면 원하는 조건과 요점들을 잘 집어서 생각할 수 있지 않을까 희망을 가지고 있는 중이다.
문제
2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 각 자릿수가 모두 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오.
풀이 (내 코드 및 설명)
while True:
# 입력
try:
n = int(input())
except:
break
# n의 배수 찾기
i = 1 # 자릿수
num = 0 # 각 자릿수가 1로 이루어진 수
while True:
num = (num * 10) + 1
m = num % n #나머지 (배수 여부 판별)
if(m==0):
print(i)
break
i+=1
- 요구하는 출력: 각 자릿수가 모두 1로만 이루어진 n의 배수의 자릿수 출력
- 필요한 변수: 자릿수, 각 자릿수가 1로 이루어진 수, 배수 여부 판별용
- 여기서 배수 여부 판별용 변수는 필수는 아니라고 생각하지만 내가 보기 편하라고 만들어놨다
몇 개의 값이 들어올 지 모르니 계속 반복해서 입력받은 후 예외 처리를 통해 break를 걸어 반복을 멈추도록 했다.
n의 배수 찾기 시 반복되는 블럭 속
num은 1, 11, 111, 1111, ... 의 값을 갖게 된다.
이때 m이라는 나머지 판별 변수를 넣어 n과 mod 연산을 수행하여 0(나누어 떨어짐, num은 n의 배수)일 시, 해당 num 값의 자릿수를 출력하고 끝나도록 했다.
그걸 입력이 들어온 만큼 반복하는 것이다.
끝!
정답률이 낮아서 긴장했지만 생각보다 엄청 어려운 것은 아니었지만 조금 힘들었다.
내가 문제 이해를 제대로 못해서 초반에 해맸던 것이 한 몫 하는 듯.
역시 사람은 국어를 잘 해야 한다.
'공부 > 알고리즘' 카테고리의 다른 글
백준 #2609 최대공약수와 최소공배수 (0) | 2023.08.19 |
---|---|
백준 #17425 약수의 합 (0) | 2023.08.19 |
백준 #17427 약수의 합 2 (0) | 2023.08.19 |
백준 #1037 약수 (0) | 2023.08.19 |
백준 #10430 나머지 (0) | 2023.08.19 |