🗒 문제

📝 나의 문제풀이
class Solution {
fun solution(numbers: IntArray): Int {
numbers.sort()
return numbers[numbers.size - 1] * numbers[numbers.size - 2]
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
fun solution(numbers: IntArray): Int = numbers.sorted().takeLast(2).fold(1) { i, acc -> acc * i }
}
🖊 문제 풀이 시 알면 좋을 것
sort() — 배열 자체를 정렬
numbers.sort()
✔ 특징
- 원본 배열이 바뀜
- 반환값 없음 (Unit)
- IntArray 전용
✔ 예시
val arr = intArrayOf(3, 1, 2)
arr.sort()
println(arr.toList()) // [1, 2, 3]
✔ 언제 쓰나?
- 입력 배열을 직접 써도 될 때
- 빠르고 단순
- 코테에서 가장 많이 씀 ⭐
sorted() — 새 리스트를 만들어서 정렬
numbers.sorted()
✔ 특징
- 원본 유지
- List<Int> 반환
- 내부적으로 새 컬렉션 생성
✔ 예시
val arr = intArrayOf(3, 1, 2)
val sortedList = arr.sorted()
println(arr.toList()) // [3, 1, 2]
println(sortedList) // [1, 2, 3]
🔥 sort() vs sorted() 차이 (중요)
| 구분 | sort() | sorted() |
| 원본 변경 | O | X |
| 반환값 | 없음 | List |
| 메모리 | 적음 | 더 사용 |
| 코테 추천 | ⭐⭐⭐⭐ | ⭐⭐ |
takeLast(n) — 뒤에서 n개 가져오기
list.takeLast(2)
✔ 설명
- 리스트 마지막 2개 원소를 새로운 리스트로 반환
✔ 예시
listOf(1, 2, 3, 4, 5).takeLast(2)
// [4, 5]
fold() — 값을 하나로 합치기
fold(초기값) { 누적값, 현재값 -> 계산 }
✔ 여기서 쓰인 코드
fold(1) { acc, i -> acc * i }
✔ 동작 과정
[4, 5]
초기값 = 1
1 * 4 = 4
4 * 5 = 20
👉 결과 20
fold 쉽게 이해하기
| 함수 | 의미 |
| sum() | 전부 더함 |
| fold() | 내가 원하는 방식으로 하나로 합침 |
반응형
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 삼각형의 완성조건 (1) (0) | 2025.12.19 |
|---|---|
| [프로그래머스] 머쓱이보다 키 큰 사람 (0) | 2025.12.19 |
| [프로그래머스] 세균 증식 (0) | 2025.12.19 |
| [프로그래머스] 피자 나눠 먹기 (1) (0) | 2025.12.19 |
| [프로그래머스] 편지 (0) | 2025.12.19 |