본문 바로가기
코딩테스트

[프로그래머스] k의 개수

by liz_devel 2025. 12. 22.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(i: Int, j: Int, k: Int): Int {
        return (i..j)
            .map { it.toString() }               // 숫자 → 문자열
            .sumOf { numberString ->             // 각 숫자마다
                numberString.count {             // 글자 하나씩 검사
                    it == k.toString()[0]         // '1'
                }
            }
    }
}

📝 다른 사람의 문제 풀이

다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.

class Solution {
    fun solution(i: Int, j: Int, k: Int): Int = (i..j).joinToString("").count { it.digitToInt() == k }
}

🖊 문제 풀이 시 알면 좋을 것

 

sumOf

  • 개념: 컬렉션의 각 요소를 숫자로 변환한 뒤 합계를 구함
  • 리턴 타입: Int, Long 등 숫자
  • 언제 사용: 단순 반복문 없이 컬렉션의 합을 구하고 싶을 때
val numbers = listOf(1, 2, 3)
val total = numbers.sumOf { it * 2 } // 12

문자열 + 숫자 예시:

val strs = listOf("11", "23")
val sum = strs.sumOf { it.toInt() } // 11 + 23 = 34

 

 

count

  • 개념: 컬렉션 또는 문자열에서 조건에 맞는 요소의 개수를 세는 함수
  • 리턴 타입: Int
  • 언제 사용: 특정 조건의 등장 횟수를 알고 싶을 때
val numbers = listOf(1, 2, 3, 1)
val cnt = numbers.count { it == 1 } // 2

문자열 예시:

val str = "1123"
val cnt1 = str.count { it == '1' } // 2

 

digitToInt

  • 개념: Char 타입 숫자 → Int로 변환
  • 리턴 타입: Int
  • 언제 사용: 문자열의 숫자를 실제 숫자로 계산할 때
val ch = '7'
val num = ch.digitToInt() // 7

 

 

(1..4).joinToString("")

  1. 1..4 → IntRange 객체 [1, 2, 3, 4] 생성
  2. joinToString("") → 리스트/범위의 각 요소를 문자열로 변환 후, 지정한 구분자("")로 연결
    • 여기서 ""는 빈 문자열 → 붙여서 하나의 문자열로 만듦
val result = (1..4).joinToString("")  
println(result)  // 출력: "1234"
  • 과정:
    1. 1 → "1"
    2. 2 → "2"
    3. 3 → "3"
    4. 4 → "4"
  • 구분자 없이 연결 → "1234"
반응형