πŸ“¦ Chango/🏫 First Solve at School

[BOJ][C++] λ°±μ€€ 17618번: μ‹ κΈ°ν•œ 수

선달 2023. 10. 19. 02:07
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/17618

 

17618번: μ‹ κΈ°ν•œ 수

ν‰μ†Œμ— μˆ˜μ— λŒ€ν•œ 관심이 λ§Žμ€ 아이인 λ―Όμ² μ΄λŠ” μ˜€λŠ˜λ„ λ…ΈνŠΈμ— μ—°ν•„λ‘œ 수λ₯Ό λ”ν•˜κ±°λ‚˜ λΉΌκ±°λ‚˜ κ³±ν•˜κ±°λ‚˜ λ‚˜λˆ λ³΄λ©΄μ„œ μ‹œκ°„μ„ 보내고 μžˆλ‹€. κ·ΈλŸ¬λ‹€κ°€ 18μ΄λΌλŠ” μˆ˜λŠ” μ‹ κΈ°ν•œ μ„±μ§ˆμ„ κ°€μ§„λ‹€λŠ” 것을 μ•Œ

www.acmicpc.net

 

문제

ν‰μ†Œμ— μˆ˜μ— λŒ€ν•œ 관심이 λ§Žμ€ 아이인 λ―Όμ² μ΄λŠ” μ˜€λŠ˜λ„ λ…ΈνŠΈμ— μ—°ν•„λ‘œ 수λ₯Ό λ”ν•˜κ±°λ‚˜ λΉΌκ±°λ‚˜ κ³±ν•˜κ±°λ‚˜ λ‚˜λˆ λ³΄λ©΄μ„œ μ‹œκ°„μ„ 보내고 μžˆλ‹€. κ·ΈλŸ¬λ‹€κ°€ 18μ΄λΌλŠ” μˆ˜λŠ” μ‹ κΈ°ν•œ μ„±μ§ˆμ„ κ°€μ§„λ‹€λŠ” 것을 μ•Œμ•„λƒˆλ‹€. 18을 μ΄λ£¨λŠ” 각 자릿수인 1κ³Ό 8을 ν•©ν•œ 9λŠ” 18의 μ•½μˆ˜κ°€ λœλ‹€.

λ―Όμ² μ΄λŠ” 18κ³Ό 같이 λͺ¨λ“  자릿수의 ν•©μœΌλ‘œ λ‚˜λˆ„μ–΄μ§€λŠ” 수λ₯Ό μ—¬λŸ¬ 개 더 μ°Ύμ•„λƒˆλŠ”λ°, 12, 21도 그런 μ‹ κΈ°ν•œ μˆ˜μ˜€λ‹€. λ―Όμ² μ΄λŠ” μ΄λ ‡κ²Œ λͺ¨λ“  자릿수의 ν•©μœΌλ‘œ λ‚˜λˆ„μ–΄μ§€λŠ” 수λ₯Ό “μ‹ κΈ°ν•œ 수”라고 λΆ€λ₯΄κΈ°λ‘œ ν–ˆλ‹€. λ―Όμ² μ΄λŠ” 더 큰 μ‹ κΈ°ν•œ 수λ₯Ό 찾아보기도 ν–ˆλŠ”λ° 1729도 μ‹ κΈ°ν•œ μˆ˜λΌλŠ” κ±Έ μ•Œμ•„λ‚΄μ—ˆλ‹€. 1729λŠ” 1+7+2+9=19둜 λ‚˜λˆ„μ–΄μ§„λ‹€.

λ―Όμ² μ΄λŠ” μ‹ κΈ°ν•œ μˆ˜κ°€ μ–Όλ§ˆλ‚˜ λ§Žμ€μ§€ μ•Œκ³  μ‹Άμ—ˆλ‹€. 주어진 μžμ—°μˆ˜ N에 λŒ€ν•΄ Nμ΄ν•˜μΈ μ‹ κΈ°ν•œ μˆ˜λŠ” 총 λͺ‡ κ°œμΈμ§€ κΆκΈˆν–ˆλ‹€. ν•˜μ§€λ§Œ Nμ΄ν•˜μ˜ λͺ¨λ“  μˆ˜μ— λŒ€ν•΄μ„œ μ‹ κΈ°ν•œ μˆ˜μΈμ§€ μ•„λ‹Œμ§€λ₯Ό μ†μœΌλ‘œ μ•Œμ•„λ‚΄κΈ°λŠ” μ‹œκ°„μ΄ λ„ˆλ¬΄ 였래 κ±Έλ Έλ‹€.

μ—¬λŸ¬λΆ„μ€ 민철이λ₯Ό λ„μšΈ 수 μžˆλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄μ•Ό ν•œλ‹€. μž…λ ₯으둜 1 이상인 μžμ—°μˆ˜ N이 μ£Όμ–΄μ§ˆ λ•Œ N μ΄ν•˜μΈ μ‹ κΈ°ν•œ 수의 개수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫 번째 쀄에 μ •μˆ˜ N (1 ≤ N ≤ 10,000,000) ν•˜λ‚˜κ°€ 주어진닀.

좜λ ₯

N μ΄ν•˜μΈ μ‹ κΈ°ν•œ 수의 개수λ₯Ό μ •μˆ˜λ‘œ 좜λ ₯ν•œλ‹€.

 

풀이

#include <iostream>

using namespace std;

int sum(int n) {
    int s=0;
    while(n>0) {
        s+=n%10;
        n/=10;
    }
    return s;
}

int main() {
    int n, ans=0;
    cin >> n;
    
    for(int i=1; i<=n; i++) {
        if(i%sum(i)==0) {
            ans++;
        }
    }
    
    cout << ans;
    
    return 0;
}
λ°˜μ‘ν˜•