본문 바로가기
코딩테스트

[프로그래머스] 가장 큰 수 찾기

by liz_devel 2025. 11. 13.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(array: IntArray): IntArray {
        val max = array.maxOrNull()!!
        return intArrayOf(max, array.indexOf(max))
    }
}

📝 다른 사람의 문제 풀이

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

class Solution {
    fun solution(array: IntArray): IntArray = array.maxOrNull().let {
       intArrayOf(it ?: 0, array.indexOf(it ?: 0)) 
    }

}

🖊 문제 풀이 시 알면 좋을 것

maxOrNull()

  • 배열에서 가장 큰 값을 가져오는 표준 함수
  • 반환 타입: Int? (nullable)
  • 이유: 배열이 비어 있을 수도 있기 때문
  • 그래서 !! 또는 ?: 로 처리해야 함
val max = array.maxOrNull()!!     // 비어 있지 않다는 조건이 있을 때

 

 

indexOf(value)

  • 주어진 값이 처음 등장하는 인덱스를 반환
  • 찾지 못하면 -1 반환
  • 문제의 조건상 중복이 없어서 바로 사용 가능

 

 

let {}

  • 람다 스코프 함수
  • null을 포함한 값에 대해 작업을 묶어 처리할 때 유용
  • 다른 사람 풀이처럼 nullable 값을 ?:로 처리하면서 사용하기 좋음
val result = maxOrNull().let { value ->
    intArrayOf(value ?: 0, array.indexOf(value ?: 0))
}

 

 

 

문제의 제약 조건 활용하기

  • 길이 1~100 → 빈 배열 아님
  • 중복 없음 → max 찾고 indexOf 해도 문제 없음
  • 원소 0~1000 → int 범위 매우 안전

이 조건 덕분에 이 문제는
maxOrNull()!! + indexOf(max)
조합으로 간단하게 해결 가능.

반응형