728x90

 

1. ๋ฌธ์ œ ์š”์•ฝ

์ ˆ๋Œ“๊ฐ’์ด 10c ํ˜•ํƒœ์ธ ์ •์ˆ˜๋“ค์ด ์ ํžŒ ๋ฒ„ํŠผ
ํ˜„์žฌ ์ธต ์ˆ˜์— ๋ฒ„ํŠผ์— ์ ํ˜€ ์žˆ๋Š” ๊ฐ’์„ ๋”ํ•œ ์ธต์œผ๋กœ ์ด๋™
์—˜๋ฆฌ๋ฒ ์ดํ„ฐ๊ฐ€ ์œ„์น˜ํ•ด ์žˆ๋Š” ์ธต๊ณผ ๋ฒ„ํŠผ์˜ ๊ฐ’์„ ๋”ํ•œ ๊ฒฐ๊ณผ๊ฐ€ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ๋Š” ์›€์ง์ด์ง€ ์•Š์Œ
0์ธต์ด ๊ฐ€์žฅ ์•„๋ž˜์ธต
๋ฒ„ํŠผ ํ•œ๋ฒˆ ๋‹น ๋Œ ํ•œ๊ฐœ
์ตœ์†Œํ•œ์˜ ๋Œ ์ตœ๋Œ€ํ•œ์œผ๋กœ ๋‚ด๋ ค๊ฐ€๊ธฐ
10๋‹จ์œ„๋กœ ๋‚˜๋จธ์ง€ ๊ณ„์‚ฐ
2,5,5,4 -> 16
1,6 -> 1+(10-6) = 5
7~9 ์ธ ๊ฒฝ์šฐ ๋ฐ˜์˜ฌ๋ฆผํ•ด์„œ ๋นผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ์ด๋“
1~5 ์ธ ๊ฒฝ์šฐ ๊ทธ๋ƒฅ ๋นผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ด๋“
2000 + 500 + 50 + 4
์ž‘์€ ๊ฒฐ๊ณผ๋“ค์„ ๋ชจ์•„์„œ ํฐ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ธฐ

 

 

2. ์ฝ”๋“œ

#include <string>
#include <vector>

using namespace std;

//์ตœ์ ์˜ ์‚ฌ์šฉ ๋Œ ๊ฐฏ์ˆ˜ ๊ตฌํ•ด์„œ answer์— ๋”ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜
void GetOptimalStoneCount(int& storey,int& answer){
    int count = storey%10;
    
    if(count<5) answer+=count;
    else{
        if(count==5&&storey%100<50){
            answer+=count;
        }
        else{
            answer+=10-count;
            storey=storey+10-count;
        }
    }
    storey/=10;
    //printf("%d, %d\n",storey,answer);
}

int solution(int storey) {
    int answer = 0;

    while(storey>1){
        GetOptimalStoneCount(storey,answer);
    }
    
    return answer+storey;
}

 

3. ํ•ด์„ค

์ œ๊ฐ€ ์„ ํƒํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ฐฉ๋ฒ•์€ 10์”ฉ ๋‚˜๋ˆˆ๋‹ค์Œ ํ•ด๋‹น ๊ฐ’์ด ๋ฐ˜์˜ฌ๋ฆผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋งจ ๋์˜ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ 6์ด์ƒ์ธ ๊ฒฝ์šฐ -6์„ ํ†ตํ•ด 6๋ฒˆ ๋Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ•œ์ž๋ฆฟ์ˆ˜๋ฅผ ๋Š˜๋ ค์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ด๋“์ž…๋‹ˆ๋‹ค. 56์˜ ๊ฒฝ์šฐ 5+6 = 11 ๋ณด๋‹ค 4+6 = 10 ์˜ ๊ฒฝ์šฐ 1์˜ ์ด๋“์„ ๋” ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋กœ์ง์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ ๋˜๋ฉด ์ตœ์ ์˜ ๋Œ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ 5์˜ ๊ฒฝ์šฐ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์ด 555, 545 ์ด ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

545์˜ ๊ฒฝ์šฐ 5+4+5 = 14๊ฐ€ ์ตœ์ ์˜ ๋Œ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋ฐ˜์˜ฌ๋ฆผ์„ ํ•ด๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ 5+5+5 = 15๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ๋Œ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

555์˜ ๊ฒฝ์šฐ๊ฐ€ ์ œ์ผ ํ—ท๊ฐˆ๋ ค์„œ ์‹œ๊ฐ„์„ ์˜ค๋ž˜์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

555์˜ ๊ฒฝ์šฐ,

560 -> +5  : 5๋ฒˆ(+1)
600 -> +40 : 4๋ฒˆ(+10)
1000 -> +400 : 4๋ฒˆ(+100)
0 -> -1000 : 1๋ฒˆ(-1000)

 

 

if(count==5&&storey%100<50){
	answer+=count;
}

 

ํ•ด๋‹น if๋ฌธ์„ ํ†ตํ•ด 10์˜ ์ž๋ฆฌ ์ˆ˜๊ฐ€5๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜์˜ฌ๋ฆผ์„ ํ•ด์ฃผ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ - ๋ฅผ ๊ฐํ–‰ํ•˜๊ณ , ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜์˜ฌ๋ฆผ์„ ์ง„ํ–‰ํ•˜์—ฌ ์ด๋“์„ ๋ณด๋Š” ํ˜•ํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

 

4. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

999 -> 1+1 = 2

55 -> 5+5 = 10

75 -> 5+2+1 = 8

155 -> 5+4+2 = 11

545 -> 5+4+5 = 14

555 -> 5+4+4+1 = 14

 

 

 

 

๋ฐ˜์‘ํ˜•

+ Recent posts