[프로그래머스] 수열과 구간 쿼리 4

devel_liz·2024년 12월 2일
0

코딩테스트

목록 보기
14/45

🗒 문제



📝 나의 문제풀이

class Solution {
    fun solution(arr: IntArray, queries: Array<IntArray>): IntArray {
        queries.forEach{ (s, e, k) ->
            for(i in s..e){
                if( i % k == 0) arr[i] += 1 }
            }
        return arr

    }
}

📝 다른 사람의 문제 풀이

class Solution {
    fun solution(arr: IntArray, queries: Array<IntArray>): IntArray = arr.apply {
        queries.forEach { (s, e, k) -> (s..e).filter { it % k == 0 }.forEach { arr[it]++ } }
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • for문
    • for문은 특정 범위나 컬렉션을 반복해서 순회할 때 사용하는 제어 구조입니다.
      for (i in 1..5) { 
        println(i) // 1부터 5까지 출력
      }
  • 구조 분해

    • Kotlin의 구조 분해 선언은 여러 값을 한꺼번에 변수로 나누어 할당할 때 사용됩니다.
      val (a, b, c) = listOf(1, 2, 3)
      println(a) // 1
      println(b) // 2
      println(c) // 3
  • ++ (증가 연산자)

    • ++는 값을 1 증가시키는 연산자입니다.
      var x = 5
      x++ // x는 6
  • (s..e)

    • (s..e)는 Kotlin에서 IntRange라는 클래스 객체를 반환합니다.
    • IntRangeIterable 인터페이스를 구현하므로, 이를 대상으로 filter, forEach, map 등의 고차 함수들을 호출할 수 있습니다.
      • 단순히 (s..e)만 사용한 경우
        println 함수는 IntRange 객체의 toString() 메서드를 호출하며, 이 메서드는 범위의 시작 값과 끝 값을 start..endInclusive 형식으로 반환합니다.
      			val range = (1..5) // IntRange 생성
      			println(range) // 1..5
      • 범위의 요소를 출력하려면?
      			println((1..5).toList()) // [1, 2, 3, 4, 5]
profile
Android zizon

0개의 댓글

관련 채용 정보