Code in

프로그래머스 탐욕법(Greedy) 체육복 with Kotlin 본문

알고리즘 스터디_문제풀이

프로그래머스 탐욕법(Greedy) 체육복 with Kotlin

heyhmin 2020. 8. 15. 19:32

프로그래머스 탐욕법(Greedy) 부분 체육복 문제입니다.

IntelliJ에서의 풀이입니다.

val n: Int = 5 // 2 ~ 30
val lost: IntArray = intArrayOf(2, 4) // size 1 ~ n
val reserve: IntArray = intArrayOf(1, 3, 5) // size 1 ~ n

fun solution(n: Int, lost: IntArray, reserve: IntArray): Int {
    var answer = 0
    var current: IntArray = IntArray(n+2){1} // 번호는 1부터 시작 끝 1개는 error 방지
    lost.forEach { current[it]-- }
    reserve.forEach { current[it]++ }
    // current 파악

    for (i in 1 .. n){
        if (current[i] == 0 && current[i-1] == 2)
            current[i]++.also { current[i-1]-- }
        else if (current[i] == 0 && current[i+1] == 2)
            current[i]++.also { current[i+1]-- }
    }// 빌려주기

    for (i in 1 .. n)
        if (current[i] > 0) answer++

    return answer
}

fun main() {
    print(solution(n, lost, reserve)) // 5
}

URL: https://programmers.co.kr/learn/courses/30/lessons/42862

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번�

programmers.co.kr

 

Comments