코딩테스트

k의 개수 JAVA 자바 코딩테스트 프로그래머스 코테

daeyun대윤 2023. 10. 31. 07:07

k의 개수 JAVA 자바

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

문제 설명 : 1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

 

나의 풀이 : int i부터 j까지 수를 모두 문자열로 변경 후, 이어붙인 다음 contains로 k와 일치한지에 따라서 answer 카운트를 올려줬다.

 

처음에는 단순하게 i를 Integer.toString한 값과 k를 Integer.toString한 값을 비교했는데, 그렇게 하면 k가 1로 주어졌을 때,  11을 문자화 하여 비교하면,  1번만 카운트 하는 것을 발견했다.

 

그래서 i부터 j까지 모든 수를 문자열로 변환 후 이어붙이고 하나씩 비교해야 되겠다고 생각들었다. 코드를 변경하면서 equals 대신 contains를 사용했는데.. 지나고 보니까... 어차피 하나씩 비교하는 거면.... contains보다 equals가 맞았겠네.. 하느 생각이 지금 블로그에 글 쓰면서 이제야 들었다. 아무튼... contains도 통과됨...

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        String istr = "";
        
        for(; i <= j ; i++){ istr += Integer.toString(i); }
        
        String[] check = istr.split("");
        
        for(int idx=0; idx<check.length; idx++){
            if(check[idx].contains(Integer.toString(k)) ) answer++;
        }

        return answer;
    }
}

 

int를 String으로 변환시 참고 블로그 : https://hianna.tistory.com/524

 

[Java] String을 int로, int를 String으로 변환하기 (문자열 숫자 변환)

String -> int (문자열을 숫자로) String 문자열을 int로 변환하기 위해서는 java.lang.Integer 클래스의 parseInt()와 valueOf() 메소드를 사용할 수 있습니다. Integer.parseInt() static int parseInt​(String s) java.lang.Intege

hianna.tistory.com


프로그래머스에서 코딩테스트 이용중에 다른사람의 풀이를 보다가, [나의 풀이]를 보면 내가 아무리 수정을 해도 코드가 변경되지 않는 것을 발견했다. 궁금해서 구글링해보니 공식 답변이 있었다. 

 

처음으로 100점을 받았을 때의 코드가 표시되고, 수정이나 삭제의 기능은 없다고 한다!

아핫...!

 

https://programmers.zendesk.com/hc/ko/articles/900002702123-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C%EC%9D%98-%EB%82%98%EC%9D%98-%ED%92%80%EC%9D%B4-%EC%97%90-%EB%93%B1%EB%A1%9D%EB%90%9C-%EC%BD%94%EB%93%9C%EB%A5%BC-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B3%A0-%EC%8B%B6%EC%8A%B5%EB%8B%88%EB%8B%A4-

 

 

 

728x90
300x250