728x90
풀이
class Solution {
fun solution(n: Int, lost: IntArray, reserve: IntArray): Int {
// 학생들의 체육복 default 갯수
val students = IntArray(n) { 1 }
// 학생들중 체육복을 잃어버린 사람
lost.forEach { los -> students[los - 1] = students[los - 1] - 1 }
// 학생들중 체육복 여벌을 가지고 있는 사람
reserve.forEach { res -> students[res - 1] = students[res - 1] + 1 }
/**
* 설명
* - 체육복을 잃어버린 사람의 앞뒤를 확인한뒤 여벌이 있는 자의 체육복을 빌린다.
*
* 부연 설명(특이점)
* - 첫번째 인덱스에 해당하는 학생은 이전사람은 확인하지 못함으로, 이후 사람을 확인한다.
* - 마지막 인덱스에 해당하는 학생은 이후사람은 확인하지 못함으로, 이전 사람을 확인한다.
* */
students.forEachIndexed { index, student ->
if (index == 0 && student == 0) {
if (students[index + 1] == 2) {
students[index] = 1
students[index+1] = 1
}
}
else if(index == n-1 && student == 0){
if(students[index - 1] == 2){
students[index] = 1
students[index-1] = 1
}
}
else if(index != 0 && index != n-1 && student == 0) {
if (students[index - 1] == 2) {
students[index - 1] = 1
students[index] = 1
}
else if (students[index + 1] == 2) {
students[index + 1] = 1
students[index] = 1
}
}
}
return students.filter { it != 0 }.size
}
}
출처
728x90
'Algorithm > Programmers' 카테고리의 다른 글
Programmers 스택/큐::레벨2::프린터 (0) | 2022.04.08 |
---|---|
Programmers :: 해시 전화 번호 목록 레벨2 (0) | 2022.03.26 |
Programmers :: 정렬 가장 큰 수 레벨2 (0) | 2022.03.23 |
Programmers :: Heap(힙) 더 맵게 레벨2 (0) | 2022.03.23 |
Programmers :: DFS(깊이 우선 탐색법) 네트워크 레벨 3 (0) | 2022.03.23 |