BOJ 4673번: μ…€ν”„ λ„˜λ²„

2020. 9. 22. 16:40Β·μ•Œκ³ λ¦¬μ¦˜/BaekJoon
728x90

문제

μ…€ν”„ λ„˜λ²„λŠ” 1949λ…„ 인도 μˆ˜ν•™μž D.R Kaprekarκ°€ 이름을 λΆ™μ˜€λ‹€

μ–‘μ˜ μ •μˆ˜ n에 λŒ€ν•΄μ„œ d(n)을 nκ³Ό n의 각 자리수λ₯Ό λ”ν•˜λŠ” ν•¨μˆ˜λΌκ³  μ •μ˜ν•˜μž

예λ₯Ό λ“€μ–΄ d(75)=75+7+5=87이닀

μ–‘μ˜ μ •μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 이 수λ₯Ό μ‹œμž‘ν•΄μ„œ n, d(n),d(d(n)),d(d(d(n))),....κ³Ό 같은 λ¬΄ν•œ μˆ˜μ—΄μ„ λ§Œλ“€ 수 μžˆλ‹€

μƒμ„±μžκ°€ μ—†λŠ” 숫자λ₯Ό μ…€ν”„ λ„˜λ²„λΌκ³  ν•œλ‹€

100보닀 μž‘μ€ μ…€ν”„ λ„˜λ²„λŠ” 1,3,5,7,9,20,31,42,53,64,75,86,97 총 13κ°œκ°€ μžˆλ‹€

10000보닀 μž‘κ±°λ‚˜ 같은 μ…€ν”„ λ„˜λ²„λ₯Ό ν•œ 쀄에 ν•˜λ‚˜μ”© μ¦κ°€ν•˜λŠ” μˆœμ„œλ‘œ 좜λ ₯ν•œλ‹€

 

좜λ ₯

10000보닀 μž‘κ±°λ‚˜ 같은 μ…€ν”„ λ„˜λ²„λ₯Ό ν•œ 쀄에 ν•˜λ‚˜μ”© μ¦κ°€ν•˜λŠ” μˆœμ„œλ‘œ 좜λ ₯ν•œλ‹€

 

μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
//μž¬κ·€ν•¨μˆ˜
void recursiveFunc(int idx,bool array[])
{
    int sum=0;
    if(idx<10000)
    {
        sum+=idx;
//각 자릿수λ₯Ό 더함
        while(idx>0){
            sum+=(idx%10);
            idx/=10;
        }
//ν•΄λ‹Ή μžλ¦Ώμˆ˜μ— 체크함
        if(array[sum]==false&&sum<10000)
            array[sum]=true;
        return recursiveFunc(sum,array);
    }
    else{
        return ;
    }
}
 
int main() {
    bool array[10000]={false,};
    for(int i=1;i<10000;i++)
    {
        recursiveFunc(i,array);
    }
    for(int i=1;i<10000;i++){
        if(array[i]==false){
            printf("%d\n",i);
        }
    }
    return 0;
}
Colored by Color Scripter
cs

*κ°„λ‹¨ν•œ ν•΄μ„€*

이 문제의 경우 μž¬κ·€ν•¨μˆ˜λ₯Ό λ§Œλ“€ 수 μžˆλƒλ₯Ό λ¬Όμ–΄λ³΄λŠ” λ¬Έμ œμ΄λ‹€

10000개의 bool 배열을 λ§Œλ“  ν›„ μ…€ν”„ λ„˜λ²„λ₯Ό μ²΄ν¬ν•˜λŠ” ν•¨μˆ˜μ—μ„œ λ§Œμ•½ ν•΄λ‹Ή μˆ«μžκ°€ λ‚˜μ˜¨λ‹€λ©΄ κ·Έ μžλ¦¬μ— trueλ₯Ό λ„£λŠ”λ‹€

λͺ¨λ“  체크가 λλ‚œ ν›„ false 값을 κ°€μ§„ λ°°μ—΄μ˜ 자리 값을 좜λ ₯ν•˜λ©΄ λœλ‹€

μ˜ˆμ™Έ 체크 같은 경우 μ…€ν”„ λ„˜λ²„λ₯Ό κ³„μ‚°ν•˜λŠ” κ³Όμ •μ—μ„œ 10000을 λ„˜λŠ” κ²½μš°μ™€ idxκ°€ 10000을 λ„˜λŠ” 경우 두 κ°œμ΄λ‹€

κ·Έλ¦Όκ³Ό 같은 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ±°μ³μ„œ μ§„ν–‰λœλ‹€

μ§€κΈˆ λ³΄λ‹ˆ 이미 true 값을 κ°€μ§€κ³  μžˆλŠ” idx듀은 체크 ν•˜μ§€ μ•ŠλŠ” 것이 더 계산에 효율적일 것 κ°™λ‹€

 

*λ©”λͺ¨λ¦¬*

1984KB

*μ‹œκ°„*

20ms

*μ–Έμ–΄*

C++14

*μ½”λ“œ 길이*

484B

 

 

*이 λ°©λ²•λ§Œμ΄ λ§žλŠ” 정닡은 μ•„λ‹™λ‹ˆλ‹€.

훨씬 μ’‹κ³  λΉ λ₯Έ λ‹€λ₯Έ μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•Œκ³ λ¦¬μ¦˜ κ³΅λΆ€ν•˜μ‹œλŠ” λΆ„λ“€ ν™”μ΄νŒ…! '0'/*

λ°˜μ‘ν˜•

'μ•Œκ³ λ¦¬μ¦˜ > BaekJoon' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

BOJ 11654번: μ•„μŠ€ν‚€ μ½”λ“œ  (0) 2020.10.09
BOJ 1065번: ν•œμˆ˜  (1) 2020.09.27
BOJ 15596번: μ •μˆ˜ N개의 ν•©  (0) 2020.08.22
BOJ 4344번: 평균은 λ„˜κ² μ§€  (0) 2020.08.21
BOJ 8959번: OXν€΄μ¦ˆ  (0) 2020.08.18
'μ•Œκ³ λ¦¬μ¦˜/BaekJoon' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • BOJ 11654번: μ•„μŠ€ν‚€ μ½”λ“œ
  • BOJ 1065번: ν•œμˆ˜
  • BOJ 15596번: μ •μˆ˜ N개의 ν•©
  • BOJ 4344번: 평균은 λ„˜κ² μ§€
KiTFOx
KiTFOx
  • KiTFOx
    KiTFOx's Notepad πŸ“
    KiTFOx
  • 곡지사항

    • πŸ“’ KiTFOx
  • 250x250
    • KiTFOx (118)
      • 곡뢀 (8)
        • CㆍC++ (7)
        • Design Pattern (2)
        • Crowd Simulation (2)
        • LearnOpenGL λ²ˆμ—­ (3)
        • OpenGL 자료 λ²ˆμ—­ (2)
        • OpenGL (1)
        • UE 자료 λ²ˆμ—­ (1)
        • AR (0)
        • OpenCV (0)
      • μ•Œκ³ λ¦¬μ¦˜ (50)
        • 자료ꡬ쑰 (3)
        • BaekJoon (35)
        • Programmers (11)
      • OpenGL 따라가기 (2)
      • κ²Œμž„μ—”μ§„ (15)
        • Unity (13)
        • UE4 (0)
        • UE5 (2)
      • λ©”νƒ€λ²„μŠ€ (4)
        • Engage VR (3)
        • Altspace VR (1)
      • 포트폴리였 ν”„λ‘œμ νŠΈ (2)
        • NewRo (1)
        • Amaimon(Unity3D) (0)
        • ArenaSurvival(UE5) (0)
      • κ°œλ°œμΌμ§€ (1)
        • Pub-Simulator (1)
        • Project-B (0)
      • λ„€νŠΈμ›Œν¬ (4)
      • Etc Study (5)
      • λŒ€μ™Έν™œλ™ (8)
        • ν¬λž˜ν”„ν†€ μ •κΈ€ κ²Œμž„λž© (6)
      • 회고둝 (0)
      • κ²Œμž„ ν•œκΈ€νŒ¨μΉ˜ (0)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
KiTFOx
BOJ 4673번: μ…€ν”„ λ„˜λ²„
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”