본문 바로가기
algorithm/Programmers

[JAVA] K의 개수

by 이쟝 2023. 3. 20.

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

 

프로그래머스

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

programmers.co.kr

1.  k를 String형으로 바꿔서 for문이 돌아갈 때 contains로 k가 있으면 answer ++, 하지만 11같은 것 때문에(같은 숫자 두 번) for문 나오는 숫자들을 char형으로 바꿔서 char-'0'으로 하면 int로 된다. int로 변환된 ch와 k 비교 해서 ++;

2. 함수들 안쓰고 오로지 /10 %10으로 비교

1. 

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        
        for(int x=i; x<=j; x++) {
            if(String.valueOf(x).contains(String.valueOf(k))) {
                for(char ch : String.valueOf(x).toCharArray()) {
                    if(ch-'0' == k) answer ++;
                }
            }
        }
        return answer;
    }
}

 

  • 첫 번째 테스트케이스가 꽤 길게 나와서 슬펐지만.. (다른 풀이 중에 진짜 깜짝놀라게 오래걸린 것도 보긴함..) 그래도 한 번에 해결한 것에.. 의의를 둔다...
  • ch-'0'으로 하면 char -> int 변환 되는 거..!

2. 

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;

        for (int x= i; x<= j; x++){
            int tmp = x;
           
            while(tmp != 0) {
                if(tmp % 10 == k) answer++;
                tmp /= 10;
            }
        }
        return answer;
    }
}

 

  • 깔끔 그 자체인 코드.. x를 임시 변수에 넣고, 그것을 while문으로 돌려서 일의 자리 숫자 k와 비교해서 answer ++
  • 일의 자리, 십의 자리 숫자 나올 때는 /= %= 이 좋은 것 같다. 시간이 빨리 나와서 놀랐다.

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

[JAVA] 이진수 더하기  (0) 2023.03.23
[JAVA] 잘라서 배열로 저장하기  (0) 2023.03.23
[JAVA] A로 B 만들기  (0) 2023.03.20
[JAVA] 문자열 정렬하기 (2)  (0) 2023.03.20
[JAVA] 숫자 찾기  (0) 2023.03.20