CodingTest

프로그래머스 - 숫자 찾기 (JAVA)

쩡선영 2022. 12. 29. 03:03

프로그래머스 숫자 찾기 0단계 문제 입니당

https://school.programmers.co.kr/learn/courses/30/lessons/120904

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

● 문제설명

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

 

<<제안사항>>

1)  0 < num < 1,000,000

2)  0<= k < 10

3)  num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

 

 

● 내가 직접 짜본 코드

class Solution {
    public int solution(int num, int k) {
        int answer = 0, dividied_val=0, cnt=0;
       //1
        for(int i=1; i<=1000000; i*=10){
            if(i>num){
                dividied_val=i/10;
                break;
            } 
        }
        
        //2
        for(int i=dividied_val; i>=1; i/=10){
            cnt++;
            if(k==(num/i%10)){ 
                answer=cnt;
                break;
            }
        }
        
        if(answer==0) answer=-1;
        return answer;
    }
}

 

 

● 코드 해설

1. num의 자릿수를 구역1에서 구합니다 (12341 -> 10000)

2. dividied_val부터 i까지 10씩 감소시키면서

3. num/i%10이 k와 같으면

4. cnt를 answer에 넣어줍니다.

5. 반복문 다 빠져 나왔는데도 answer가 0 이면 -1을 넣어줍니다

 

● 다른 사람의 코드

class Solution {
    public int solution(int num, int k) {
        int answer = 0;
        int count  = 1;
        while(num / 10 > 0) {
            if(num % 10 == k) {
                answer = count;
            }
            num /= 10;
            ++count;
        }
        if(num % 10 == k) {
            answer = count;
        }
        System.out.println(answer);
        System.out.println(count);
        return answer > 0 ? count-answer+1 : -1;
    }
}

제어문과 반복문으로만 작성한 사람이 한 분 더 계셨네요

오호 이렇게 풀 수 있군요!

삼항연산자를 사용하니 더욱 깔끔하네요

 

제가 아직 1학년이라 클래스 생성자까지밖에 못 배운 상태입니다 ㅠㅠ

그래서 코드를 짤 수 있는 범위가 재한적이지만 아는 한에서는 최선을 다해! 문제를 풀어볼게요 💖💖