Contents

숫자 찾기 (with.Java)

   Mar 3, 2024     1 min read

β€œμˆ«μž 찾기” λ¬Έμ œμ— λŒ€ν•˜μ—¬ μ•Œμ•„λ³Έ κΈ€μž…λ‹ˆλ‹€.

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

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

문제

μ •μˆ˜ numκ³Ό kκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, num을 μ΄λ£¨λŠ” 숫자 쀑에 kκ°€ 있으면 num의 κ·Έ μˆ«μžκ°€ μžˆλŠ” 자리 수λ₯Ό returnν•˜κ³  μ—†μœΌλ©΄ -1을 return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄λ³΄μ„Έμš”.

μ œν•œμ‚¬ν•­

  • 0 < num < 1,000,000
  • 0 ≀ k < 10
  • num에 kκ°€ μ—¬λŸ¬ 개 있으면 κ°€μž₯ 처음 λ‚˜νƒ€λ‚˜λŠ” 자리λ₯Ό return ν•©λ‹ˆλ‹€.

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

numkresult
2918313
23244344
1234567-1

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

import java.util.Arrays;

class Solution {
    public int solution(int num, int k) {
        int answer = 0;
        char[] chArr = String.valueOf(num).toCharArray();
        char chK = (char) (k + '0');

        for(int i = 0; i < chArr.length; i++){
            if(chArr[i] == chK){
                answer = i + 1;
                break;
            }
        }
        if(answer == 0) answer = -1;
        return answer;
    }
}

풀이 μ„€λͺ…

  • answer λ³€μˆ˜λ₯Ό 0으둜 μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. 이 λ³€μˆ˜λŠ” kκ°€ 처음으둜 λ“±μž₯ν•˜λŠ” μœ„μΉ˜λ₯Ό μ €μž₯ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.
  • num을 String으둜 λ³€ν™˜ν•œ ν›„, toCharArray() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 각 자리의 숫자λ₯Ό char λ°°μ—΄λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.
  • chK λ³€μˆ˜μ—λŠ” kλ₯Ό char ν˜•νƒœλ‘œ λ³€ν™˜ν•œ 값을 μ €μž₯ν•©λ‹ˆλ‹€.
  • for 문을 μ‚¬μš©ν•˜μ—¬ chArr 배열을 μˆœνšŒν•˜λ©΄μ„œ chK와 같은 μˆ«μžκ°€ μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
  • chArr[i]와 chKκ°€ κ°™μœΌλ©΄, answer에 i + 1의 값을 μ €μž₯ν•˜κ³  λ°˜λ³΅λ¬Έμ„ μ’…λ£Œν•©λ‹ˆλ‹€. μ΄λ•Œ, i + 1은 1λΆ€ν„° μ‹œμž‘ν•˜λŠ” μœ„μΉ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.
  • 반볡문이 μ’…λ£Œλœ ν›„, answerκ°€ 0인 κ²½μš°λŠ” kκ°€ 주어진 μˆ«μžμ— μ—†λŠ” κ²½μš°μ΄λ―€λ‘œ -1을 μ €μž₯ν•©λ‹ˆλ‹€.
  • μ΅œμ’…μ μœΌλ‘œ answer 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.