https://school.programmers.co.kr/learn/courses/30/lessons/42862#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
fun solution(n: Int, lost: IntArray, reserve: IntArray): Int {
var answer = 0
var rent = reserve.toMutableList()
var need = lost.toMutableList()
var count = 0
lost.map {
if (reserve.contains(it)) {
rent.remove(it)
need.remove(it)
}
}
need.sort()
for (i in need) {
if (rent.contains(i - 1)) {
count++
rent.remove(i - 1)
continue
}
else if (rent.contains(i + 1)) {
count++
rent.remove(i + 1)
continue
}
else {
continue
}
}
answer = n - need.size + count
return answer
}
}
문제는 그리 어려운 문제가 아니었으나,, 반례 때문에 좀 헤맸다.. 내 코드에서는 테스트 13, 14번의 케이스가 lost 배열을 정렬해주어야 풀린다.
테스트 13, 14 의 반례는 4 [4,2] [3,5] 이다.
우선 체육복 여분을 가져온 학생이 도난을 당한 경우를 제하고 도난 당한 학생 배열을 정렬해준 뒤 도난 당한 학생의 값보다 작은 여분 가져온 학생 배열을 우선적으로 찾아주는 방식으로 했다. 시간은 20ms 안쪽으로 나왔다.
'Code KATA' 카테고리의 다른 글
Programmers 대충 만든 자판 with Kotlin (0) | 2023.12.18 |
---|---|
Programmers 문자열 나누기 with Kotlin (0) | 2023.12.15 |
Programmers 숫자 짝꿍 with Kotlin (0) | 2023.12.13 |
Programmers 옹알이 (2) with Kotlin (1) | 2023.12.12 |
Programmers 로또의 최고 순위와 최저 순위 with Kotlin (0) | 2023.12.11 |