Contents

1둜 λ§Œλ“€κΈ° (with.Java)

   Oct 9, 2023     1 min read

1둜 λ§Œλ“€κΈ°μ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

μ½”λ”© ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ©°, ν’€μ—ˆλ˜ λ¬Έμ œμ— λŒ€ν•œ νšŒκ³ μ™€ λ‹€λ₯Έ 풀이 방법을 μ•Œμ•„λ³΄λ©°, μ•Œμ•„κ°€κ³ μž ν•©λ‹ˆλ‹€.

λ¬Έμ œμ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

문제

μ •μˆ˜κ°€ μžˆμ„ λ•Œ, 짝수라면 반으둜 λ‚˜λˆ„κ³ , ν™€μˆ˜λΌλ©΄ 1을 λΊ€ λ’€ 반으둜 λ‚˜λˆ„λ©΄, λ§ˆμ§€λ§‰μ—” 1이 λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 10이 μžˆλ‹€λ©΄ λ‹€μŒκ³Ό 같은 κ³Όμ •μœΌλ‘œ 1이 λ©λ‹ˆλ‹€.

10 / 2 = 5

(5 - 1) / 2 = 4

4 / 2 = 2

2 / 2 = 1

μœ„μ™€ 같이 4번의 λ‚˜λˆ„κΈ° μ—°μ‚°μœΌλ‘œ 1이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ •μˆ˜λ“€μ΄ λ‹΄κΈ΄ 리슀트 num_listκ°€ μ£Όμ–΄μ§ˆ λ•Œ, num_list의 λͺ¨λ“  μ›μ†Œλ₯Ό 1둜 λ§Œλ“€κΈ° μœ„ν•΄μ„œ ν•„μš”ν•œ λ‚˜λˆ„κΈ° μ—°μ‚°μ˜ 횟수λ₯Ό returnν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

μž…μΆœλ ₯ μ˜ˆμ‹œ
num_listresult
[12, 4, 15, 1, 14]11

λ¬Έμ œμ— λŒ€ν•œ λ‚˜μ˜ 풀이

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
        for(int i = 0; i < num_list.length; i++){
            while(num_list[i] != 1){
                if(num_list[i] % 2 == 0){
                    num_list[i] = num_list[i] / 2;
                } else{
                    num_list[i] = (num_list[i] - 1) / 2;
                }
                answer++;
            }
        }
        return answer;
    }
}
풀이 μ„€λͺ…

int answer = 0;: κ²°κ³Όλ₯Ό μ €μž₯ν•  λ³€μˆ˜ answerλ₯Ό μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. μ΄ˆκΈ°κ°’μ€ 0μž…λ‹ˆλ‹€.

for(int i = 0; i < num_list.length; i++) : μž…λ ₯ λ°°μ—΄ num_listλ₯Ό λ°˜λ³΅ν•˜λ©΄μ„œ 각 μš”μ†Œλ₯Ό κ²€μ‚¬ν•©λ‹ˆλ‹€.

while(num_list[i] != 1) : ν˜„μž¬ μš”μ†Œκ°€ 1이 μ•„λ‹Œ 경우, λ‹€μŒ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

if(num_list[i] % 2 == 0) : ν˜„μž¬ μš”μ†Œκ°€ 짝수인 경우:

ν˜„μž¬ μš”μ†Œλ₯Ό 2둜 λ‚˜λˆ•λ‹ˆλ‹€.

else : ν˜„μž¬ μš”μ†Œκ°€ ν™€μˆ˜μΈ 경우:

ν˜„μž¬ μš”μ†Œμ—μ„œ 1을 λΉΌκ³  2둜 λ‚˜λˆ•λ‹ˆλ‹€.

answer++;: 각 연산을 μˆ˜ν–‰ν•  λ•Œλ§ˆλ‹€ answerλ₯Ό 1μ”© μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€. μ΄λŠ” ν•„μš”ν•œ μ—°μ‚° 횟수λ₯Ό μ„ΈλŠ” 역할을 ν•©λ‹ˆλ‹€.

return answer;: 각 μš”μ†Œμ— λŒ€ν•œ μ—°μ‚° 횟수λ₯Ό ν•©μ‚°ν•œ answerλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.