안드로이드 개발자의 창고
[프로그래머스] k의 개수(Lv.0) - 코틀린 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❓문제 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, 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와 타입을 맞춰 비교한다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 기능개발(Lv.2) - 코틀린 (0) | 2023.05.29 |
---|---|
[프로그래머스]의상(Lv.2) - 코틀린 (0) | 2023.05.29 |
[프로그래머스] 치킨 쿠폰(Lv.0) - 코틀린 (0) | 2023.05.14 |
[프로그래머스] 최댓값과 최솟값(Lv.2) - 코틀린 (2) | 2023.05.14 |
[프로그래머스] 정수 제곱근 판별(Lv.1) - 코틀린 (0) | 2023.05.08 |