๐Ÿ“ฆ 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;
}
๋ฐ˜์‘ํ˜•