레벨 2 넘어가니까 푸는게 힘들어져서 레벨 0,1 다시 쌓고 올라가기 🚩
코틀린스럽게 풀어보기...
0레벨 매일 최소 3문제
문제 | 머쓱이보다 키 큰 사람
https://school.programmers.co.kr/learn/courses/30/lessons/120585
내 풀이
class Solution {
fun solution(array: IntArray, height: Int): Int {
var answer = array.filter{it > height}.count()
return answer
}
}
filter 처음으로 혼자 사용해봤다.
문제 | 배열 뒤집기
https://school.programmers.co.kr/learn/courses/30/lessons/120821
num_list 를 바로 reversed() 하니 List<Int> 가 나와서 실패했다.
컬렉션 뒤집기
reverse() 객체 그대로 재정렬 되서 Unit 타입으로 반환
reversed() 재배열이 된 새로운 List<> 객체가 반환
reversedArray() 재배열이 된 새로운 Array 객체가 반환
문제 | 최댓값 만들기(1)
https://school.programmers.co.kr/learn/courses/30/lessons/120847
내 풀이
class Solution {
fun solution(numbers: IntArray): Int {
var answer: Int = 0
val length = numbers.size - 1
for((i, num) in numbers.withIndex()) {
for( j in i+1 .. length) {
if(answer < num*numbers[j]) answer = num*numbers[j]
}
}
return answer
}
}
다른 사람 풀이
class Solution {
fun solution(numbers: IntArray): Int = numbers.sorted().takeLast(2).fold(1) { i, acc -> acc * i }
}
배열을 먼저 정렬하고 제일 큰 수 두 개만 가져와서 곱했다
for 문 어떻게 돌릴지 머리 굴리고 있을 때 이미 있는 메소드로 뚝딱 해결하는게 짱이다.
class Solution { // 입력값 〉 [0, 31, 24, 10, 1, 9]
fun solution(numbers: IntArray): Int {
var a = numbers.sorted()
println(a) // [0, 1, 9, 10, 24, 31]
var b = a.takeLast(2)
println(b) // [24, 31]
var c = b.fold(1){acc, num -> acc*num}
println(c) // 744
return c
}
}
'코딩테스트' 카테고리의 다른 글
프로그래머스 | 레벨0 | Kotlin (0) | 2024.02.02 |
---|---|
프로그래머스 | 삼총사 | Kotlin (0) | 2024.01.25 |
프로그래머스 | 최대공약수와 최대공배수 | Kotlin | 다시풀기 (1) | 2024.01.24 |
프로그래머스 | 제일 작은 수 제거하기 | Kotlin (1) | 2024.01.23 |
프로그래머스 | 3진법 뒤집기 | Kotlin (0) | 2024.01.19 |