[프로그래머스] 배열 만들기 2

devel_liz·2024년 12월 2일
0

코딩테스트

목록 보기
15/45

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(l: Int, r: Int): IntArray {
        return (l..r)
            .filter{ it.toString().all(){ it == '0' || it == '5'}}
            .ifEmpty{listOf(-1)}
            .toIntArray()
    }
}

📝 다른 사람의 문제 풀이

class Solution {
    fun solution(l: Int, r: Int): List<Int> {
        return (l..r).filter { it.toString()
        .all { ch -> ch == '0' || ch == '5' }
          }.takeIf(List<Int>::isNotEmpty) ?: listOf(-1)
    }
}

🖊 문제 풀이 시 알면 좋을 것

  • all()
    • 컬렉션 내의 모든 요소가 주어진 조건을 만족하는지 확인하는 함수
    • 위 문제에 사용된 예시처럼 사용할 경우 각 문자를 하나씩 확인하여, 지정한 조건이 모든 문자에 대해 참인지를 검사한다.
    • it.toString().all { it == '0' || it == '5' }의 동작을 it = 554로 예를 들어보자.
      all 함수는 "554"라는 문자열을 각 문자에 대해 조건을 체크합니다.

      문자열 "554"의 문자 검사:
      첫 번째 문자: '5'
      조건 it == '0' || it == '5'에서 '5' == '5'가 참입니다.
      두 번째 문자: '5'
      조건 it == '0' || it == '5'에서 '5' == '5'가 참입니다.
      세 번째 문자: '4'
      조건 it == '0' || it == '5'에서 '4' == '0' || '4' == '5'가 거짓입니다.

세 번째 문자 '4'가 조건을 만족하지 않기 때문에, all 함수는 즉시 false를 반환하고 더 이상 검사하지 않습니다.

profile
Android zizon

0개의 댓글

관련 채용 정보