본문 바로가기
코딩테스트

[프로그래머스] 삼각형의 완성조건 (1)

by liz_devel 2025. 12. 19.

🗒 문제


📝 나의 문제풀이

class Solution {
    fun solution(sides: IntArray): Int {
        sides.sort()
        return if(sides[2] < sides[0] + sides[1]) 1 else 2
    }
}

 


📝 다른 사람의 문제 풀이

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

class Solution {
    fun solution(sides: IntArray) = sides.sorted().let { (x, y, z) -> if (x + y > z) 1 else 2 }
}

🖊 문제 풀이 시 알면 좋을 것

sorted()

 
sides.sorted()
  • 새 리스트(List<Int>)를 만들어 정렬
  • 원본 sides는 그대로
 
val arr = intArrayOf(3, 2, 1)
val list = arr.sorted()

println(arr.toList()) // [3, 2, 1]
println(list)         // [1, 2, 3]

⚠️ 배열 → 리스트 변환 + 새 객체 생성


 let { }

let { ... }

✔ let이 뭐냐면

  • “이 값을 it(또는 이름)으로 받아서 한 번 쓰고 결과를 반환”
 
val x = 5
x.let { it * 2 }   // 10

여기서는 이렇게 쓰임

 
sides.sorted().let { ... }

👉 정렬된 결과를 let 안에서만 사용


구조 분해 선언 (x, y, z) 

 
{ (x, y, z) -> ... }

✔ 의미

  • 리스트의 값을 순서대로 꺼내서 변수에 담기
 
val list = listOf(1, 2, 3)
val (x, y, z) = list
 
x = 1
y = 2
z = 3

그래서

if (x + y > z)

 
if (sides[0] + sides[1] > sides[2])

와 같은 의미

반응형