k의 개수 JAVA 자바 코딩테스트 프로그래머스 코테
k의 개수 JAVA 자바
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
문제 설명 : 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
프로그래머스에서 코딩테스트 이용중에 다른사람의 풀이를 보다가, [나의 풀이]를 보면 내가 아무리 수정을 해도 코드가 변경되지 않는 것을 발견했다. 궁금해서 구글링해보니 공식 답변이 있었다.
처음으로 100점을 받았을 때의 코드가 표시되고, 수정이나 삭제의 기능은 없다고 한다!
아핫...!