RIEN😚
이상한 나라의 개발자
RIEN😚
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • Algorithm (68)
      • 알고리즘 (0)
      • Baekjoon (8)
      • 프로그래머스 (55)
      • HackerRank (5)
    • Android (30)
      • Project (1)
      • Error (2)
      • Studio (1)
      • Android (26)
    • Kotlin (6)
    • CS (4)
      • 네트워크 (2)
      • 데이터베이스 (2)
    • Front End (5)
      • React (1)
      • VUE (3)
      • Project (0)
      • 기타 (1)
    • 기록 (11)
      • 회고록 (6)
      • TIL (5)

블로그 메뉴

  • Github🔥
  • 포트폴리오🌹

공지사항

인기 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
RIEN😚

이상한 나라의 개발자

Algorithm/프로그래머스

[프로그래머스] Lv 2. 피로도

2022. 5. 13. 15:11
728x90
반응형
 

코딩테스트 연습 - 피로도

XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던

programmers.co.kr

 

문제

일정 피로도를 사용해서 던전을 탐험할 수 있습니다.

이 때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다.

 

이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러 개 있는데, 한 유저가 오늘 이 던전들을 최대한 많이 탐험하려고 합니다.

현재 피로도 k와 각 던전별 "최소 필요 필요도", "소모 피로도"가 담긴 2차원 배열 dungeons가 매개변수로 주어질 때,

유저가 탐험할 수 있는 최대 던전 수를 return 하도록 solution 함수를 완성해주세요.

 

풀이

반복문의 주체가 되는 dungeons 배열이 매우 작습니다.(최대 8개)

때문에 모든 경우의 수를 확인하는 완전탐색으로 풀어도 가능할 듯 합니다.

 

코드

import kotlin.math.*

class Solution {
    var answer = 0
    fun solution(k: Int, dungeons: Array<IntArray>): Int {
        val visited = BooleanArray(dungeons.size)
        solve(k, 0, dungeons, visited)
        return answer
    }
    
    fun solve(
        k: Int, // 남은 피로도
        result: Int, // 현재까지 완료한 던전 개수
        dungeons: Array<IntArray>, // 던전 정보
        visited: BooleanArray // 던전 방문 여부
    ) {
        answer = max(answer , result)
        for (i in 0 until dungeons.size) {
            // 아직 방문하지 않은 던전이면서 피로도 가능
            if (visited[i].not() && k >= dungeons[i][0]) {
                visited[i] = true
                solve(k-dungeons[i][1],result+1,dungeons,visited)
                visited[i] = false
            }
        }
    }
}
반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Lv 2. 배달  (0) 2022.05.25
[프로그래머스] Lv 2. 2개 이하로 다른 비트  (0) 2022.05.13
[프로그래머스] Lv 2. 괄호 회전하기  (0) 2022.05.13
[프로그래머스] Lv 2. 빛의 경로 사이클  (0) 2022.05.13
[프로그래머스] Lv 1. 소수 찾기(Python3)  (0) 2022.05.12
    'Algorithm/프로그래머스' 카테고리의 다른 글
    • [프로그래머스] Lv 2. 2개 이하로 다른 비트
    • [프로그래머스] Lv 2. 괄호 회전하기
    • [프로그래머스] Lv 2. 빛의 경로 사이클
    • [프로그래머스] Lv 1. 소수 찾기(Python3)
    RIEN😚
    RIEN😚
    안드로이드 / 코틀린 독학으로 취업하자!

    티스토리툴바