https://programmers.co.kr/learn/courses/30/lessons/12980
์ฝ๋
public class Solution {
public int solution(int n) {
int ans = 0;
while(n!=1){
if(n%2 == 0)
n /= 2;
else{
n -= 1;
ans ++;
}
}
ans ++;
return ans;
}
}
ํ์ด
๊ท์น์ ์ฐพ์๋ณด๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
K์นธ ์ ํํ๋ฉด K๋งํผ์ ๊ฑด์ ์ง ์ฌ์ฉ๋์ด ๋ค๊ณ ,
(ํ์ฌ์์น * 2) ๋งํผ ์๊ฐ์ด๋ ํ๋ฉด ๊ฑด์ ์ง๋ ๋ค์ง ์๋๋ค.
๋ฐ๋ผ์ ๊ฑด์ ์ง ์ฌ์ฉ๋์ ์ต์๋ก ํ๋ ค๋ฉด ์๊ฐ์ด๋์ ๊ฐ๋ฅํ ํ ๋ง์ด ํด์ผํ๋ค.
์๊ฐ์ด๋์ ํ์ฌ์์น * 2์ด๋ฏ๋ก, 2๋ฐฐ์ฉ ์ฆ๊ฐํ๋ค.
์ฃผ์ด์ง n์ด 0์ด ๋ ๋๊น์ง(ํ์ฌ ์์น ๋์ฐฉ) ๋์์ ๊ฑฐ๊พธ๋ก ๋ด๋ ค์ค๋ฉด์
2๋ก ๋๋๊ฑฐ๋(์๊ฐ์ด๋), 1์ ๋นผ์ฃผ๋ฉด ๋๋ค(K์นธ ์ ํ)
5000์ ๊ฒฝ์ฐ๋ฅผ ์๋ก๋ค๋ฉด
2500
1250
625 -> 624 , ๊ฑด์ ์ง + 1 , ans = 1
312
156
78
39 -> 38 , ๊ฑด์ ์ง + 1 , ans = 2
19 -> 18 , ๊ฑด์ ์ง +1 , ans = 3
9 -> 8 , ๊ฑด์ ์ง + 1 , ans = 4
4
2
1 -> 0(์ข ๋ฃ) ๊ฑด์ ์ง + 1 , ans = 5
๋ฐ๋ผ์ ๊ฒฐ๊ณผ๋ 5๊ฐ ๋๋ค.
์ ์ฝ๋๋ฅผ 3ํญ์ฐ์ฐ์๋ฅผ ํตํด ๊ฐ๊ฒฐํ๊ฒ ๋ํ๋๋ค.
public class Solution {
public int solution(int n) {
int ans = 0;
while(n!=0){
ans += (n%2 == 0) ? 0 : 1;
n = (n%2 == 0) ? n/2 : n-1;
}
return ans;
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์์ด ๋๋ง์๊ธฐ (0) | 2020.03.18 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2020.03.17 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level3)์ต๊ณ ์ ์งํฉ (1) | 2020.03.17 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level3)ํ๋ ธ์ด์ ํ (0) | 2020.03.17 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level3)๋ฐฉ๋ฌธ ๊ธธ์ด (0) | 2020.03.17 |
๋๊ธ