Contents

369 κ²Œμž„ (with.Java)

   Feb 20, 2024     1 min read

β€œ369 κ²Œμž„β€ λ¬Έμ œμ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

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

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

문제

λ¨Έμ“±μ΄λŠ” μΉœκ΅¬λ“€κ³Ό 369κ²Œμž„μ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

369κ²Œμž„μ€ 1λΆ€ν„° 숫자λ₯Ό ν•˜λ‚˜μ”© λŒ€λ©° 3, 6, 9κ°€ λ“€μ–΄κ°€λŠ” μˆ«μžλŠ” 숫자 λŒ€μ‹  3, 6, 9의 개수만큼 λ°•μˆ˜λ₯Ό μΉ˜λŠ” κ²Œμž„μž…λ‹ˆλ‹€.

머쓱이가 λ§ν•΄μ•Όν•˜λŠ” 숫자 orderκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, 머쓱이가 쳐야할 λ°•μˆ˜ 횟수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄λ³΄μ„Έμš”.

μ œν•œμ‚¬ν•­

  • 1 ≀ order ≀ 1,000,000

μž…μΆœλ ₯ μ˜ˆμ‹œ

orderresult
31
294232

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

import java.util.*;
class Solution {
    public int solution(int order) {
        int answer = 0;

        for(char str : Integer.toString(order).toCharArray()){
            int temp = str - '0';
            if(temp - 3 == 0 || temp - 6 == 0 || temp - 9 == 0){
                answer++;
            }
        }
        return answer;
    }
}

풀이 μ„€λͺ…

int temp = str - β€˜0’;μ—μ„œ β€˜0’을 λΉΌλŠ” μ΄μœ λŠ” λ¬Έμžν˜•μœΌλ‘œ 된 숫자λ₯Ό μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄μ„œμž…λ‹ˆλ‹€.

λ¬Έμžν˜• μˆ«μžλŠ” ASCII μ½”λ“œ κ°’μœΌλ‘œ ν‘œν˜„λ˜λŠ”λ°, 숫자 β€˜0β€™μ˜ ASCII μ½”λ“œ 값은 48μž…λ‹ˆλ‹€.

λ”°λΌμ„œ β€˜0’과 λ¬Έμžν˜• 숫자λ₯Ό 뺌으둜써 ν•΄λ‹Ή λ¬Έμžν˜• 숫자λ₯Ό μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, str이 β€˜3’인 경우, β€˜3’ - β€˜0’은 51 - 48둜 κ³„μ‚°λ©λ‹ˆλ‹€. μ΄λŠ” μ •μˆ˜ν˜• 숫자 3κ³Ό 같은 값을 κ°€μ§€κ²Œ λ©λ‹ˆλ‹€.

즉, int temp = str - β€˜0’;은 λ¬Έμžν˜• 숫자λ₯Ό μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.