목차
반응형
문제 출처 : https://www.acmicpc.net/problem/17618
이 문제는 2019년 정보올림피아드 2차 대회 중등부 1번 문제 입니다. 문제 난이도가 높지 않아 다빈치코딩 알고리즘에도 똑같이 작성해 놓았습니다.
문제 이해하기
이 문제를 해결하기 위해서는 숫자의 각 자릿수를 계산하는 방법에 대해 숙지하고 있어야 합니다. 아직 숫자의 자릿수를 계산하는 방법을 잘 모르겠다면 아래 링크를 통해 확인 바랍니다.
각 자릿수를 더한 값으로 원래의 수가 나누어지는 경우를 신기한 수라고 하였습니다. 어떤 수가 주어졌을 때 어떤 수까지 이 신기한 수가 몇 개인지 찾는 것이 문제 입니다.
코드 작성하기
간단한 문제이기 때문에 바로 코드작성을 해보겠습니다.
입력 받기
N = int(input())
신기한 수의 개수를 알아내고 싶은 숫자 N을 입력 받습니다.
결과 출력하기
ans = 0
for i in range(1, N+1):
if solve(i):
ans += 1
print(ans)
1부터 N까지 모든 숫자의 신기한 수를 찾습니다. solve 함수를 통해 True가 리턴되면 신기한 수가 되어 ans에 1씩 더해줍니다. 최종적으로 ans를 출력하면 신기한 수의 개수를 출력하는 것입니다.
solve 함수
def solve(n):
si = str(n)
tmp = 0
for s in si:
tmp += int(s)
if n % tmp == 0:
return True
return False
solve 함수는 숫자를 문자로 바꿔서 계산해 주었습니다. tmp 값이 각 자릿수의 합입니다. 최종적으로 n을 tmp로 나누어 0이 나오면 True를 리턴하고, 아닌 경우에는 False를 리턴합니다.
전체 코드
전체 코드를 확인해 보겠습니다.
N = int(input())
def solve(n):
si = str(n)
tmp = 0
for s in si:
tmp += int(s)
if n % tmp == 0:
return True
return False
ans = 0
for i in range(1, N+1):
if solve(i):
ans += 1
print(ans)
반응형
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준 17619]2019 정올 2차 중등부 "개구리 점프" (0) | 2024.03.07 |
---|---|
[백준 17615] 2019 정올 2차 초등부 "볼 모으기" (0) | 2024.03.06 |
[백준 19940] 2020 정올 1차 초등부 "피자 오븐"(2) (0) | 2024.03.04 |
[백준 19940] 2020 정올 1차 초등부 "피자 오븐"(1) (0) | 2024.03.03 |
[백준 19942] 2020 정올 1차 중등부 "다이어트" (0) | 2024.03.03 |