Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[프로그래머스] k의 개수(Lv.0) - 코틀린 본문

코딩테스트

[프로그래머스] k의 개수(Lv.0) - 코틀린

Wise-99 2023. 5. 14. 23:53
 

프로그래머스

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

programmers.co.kr

 

❓문제 설명

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

 

❓ 제한 사항

  • 1 ≤ i < j ≤ 100,000
  • 0 ≤ k ≤ 9

 

✔️ 내 코드

class Solution {
    fun solution(i: Int, j: Int, k: Int): Int {
        var numString = ""
        
        for(num in i..j){
            numString += num.toString()
        }
        
        return numString.count { it == Integer.toString(k)[0] }
    }
}

✔️ 코드 풀이

  • i부터 j까지의 모든 숫자를 String으로 변환하여 문자열로 저장한다.
  • 문자열에서 k와 같은 문자를 찾기 위해 k를 String으로 바꾼다.
  • k는 0부터 9까지이므로 한자리 수이다.
  • 따라서 k를 문자열로 변환했을 때 0번째 글자와 같은 문자가 몇번 있는지 count 한다.

 


 

✔️ 다른 정답 코드

class Solution {
    fun solution(i: Int, j: Int, k: Int): Int = (i..j).joinToString("").count { it.digitToInt() == k }
}
  • i부터 j까지의 숫자를 ""로 연결된 String으로 만든다.
  • String에서 count를 이용하여 k의 갯수를 센다.
  • 이 때 digitToInt()를 사용하여 k와 타입을 맞춰 비교한다.