본문 바로가기
algorithm/Programmers

[JAVA] 숫자 찾기

by 이쟝 2023. 3. 20.

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

 

프로그래머스

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

programmers.co.kr

1. num을 Char[ ]로 만들어서 for문 돌려서 값 찾기, 없으면 if문 -1

2. valueOf와 indexOf로

3. contains와 indexOf로

4. 천재같은 코드

 

1.

class Solution {
    public int solution(int num, int k) {
       
        char[] numChar = String.valueOf(num).toCharArray();

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

 

  • 제일 손쉽게 생각난 방법, char배열로 만들어서 for문 돌려서 해결했다.

2. String.valueOf과 indexOf의 콜라보

class Solution {
    public int solution(int num, int k) {
        int answer = String.valueOf(num).indexOf(String.valueOf(k));
        return answer < 0 ? -1 : answer+1 ;
    }
}

class Solution {
    public int solution(int num, int k) {
        int answer = -1;
        if(String.valueOf(num).contains(String.valueOf(k))) {
            answer = String.valueOf(num).indexOf(String.valueOf(k)) +1;
        }

        return answer;
    }
}

 

  • 문자열 안에 특정 문자열 찾을 때 indexOf와 contains 쓰면 됨...! 
  • 이제 int => String 변환은 눈감고도 할 수 있을 것 같다.. 근데 .toString( )은 잘 안될때도 있어서,, (차이는 널처리 변환..!) 그냥 주로 String.valueOf로 하면된다.

3. 천재 코드 (다른 사람 풀이)

class Solution {
    public int solution(int num, int k) {
        return ("-" + num).indexOf(String.valueOf(k));
    }
}

 

 

  • String.valueOf(num).indexOf(String.valueOf(k)); 으로 하면 없을 때 -1로 잘 나오긴 하지만, 인덱스가 0부터 찍히게 된다..
  • 그래서 "-"를 더해줘서 인덱스를 1부터 세게 해준다. 29183 => -29183 / 그래서 - 대신 다른 문자를 해도 상관없다..
  • 처음에 이 풀이 보고 머리 댕쳤다..! 깜짝 놀랐다.
  • 근데 시간은 1번과 2번에 비교해서 엄청 오래 걸린다... 왜.. 그런지는 모르겠지만.. 

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] A로 B 만들기  (0) 2023.03.20
[JAVA] 문자열 정렬하기 (2)  (0) 2023.03.20
[JAVA] 최댓값 만들기(2)  (0) 2023.03.20
[JAVA] n의 배수 고르기  (0) 2023.03.19
[JAVA] 제곱수 판별하기  (0) 2023.03.16