Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Main
- hackerrank
- Recursion
- 알고리즘
- booleanarray
- dynamic programming
- 프로그래머스
- lastIndex
- 2020
- Developer
- PriorityQueue
- dp
- intarray
- 2D Array
- indices
- Queue
- report
- 동적계획법
- Kotlin
- foreach
- programmers
- contentToString
- GREEDY
- sortedBy
- Java
- Poll
- solution
- 코틀린
- Util
- heap
Archives
- Today
- Total
Code in
프로그래머스 깊이/너비 우선 탐색 여행경로 with Kotlin 본문
프로그래머스 깊이/너비 우선 탐색 여행경로 문제입니다.
프로그래머스에서의 풀이입니다.
import java.util.Stack
class Solution {
val path: MutableList<String> = mutableListOf()
val stack: Stack<String> = Stack()
fun solution(tickets: Array<Array<String>>): Array<String> {
tickets.sortWith(compareBy({ it[0] }, { it[1] }))
val usedTicket = BooleanArray(tickets.size) { false }
for (i in tickets.indices) {
if (tickets[i][0] == "ICN") {
usedTicket[i] = true
stack.push("ICN")
stack.push(tickets[i][1])
visit(tickets, 1, usedTicket)
//reset
while(!stack.isEmpty())
stack.pop()
for(k in usedTicket.indices)
usedTicket[k] = false
if(!path.isEmpty()) break
}
}
print(path.toTypedArray().contentToString())
return path.toTypedArray()
}
fun visit(tickets: Array<Array<String>>, cnt: Int, usedTicket: BooleanArray) {
if (cnt >= tickets.size && tickets.size < stack.size) {
val tmpstack = Stack<String>()
while (!stack.isEmpty())
tmpstack.push(stack.pop())
var tmpCnt = cnt
while (!tmpstack.isEmpty() && tmpCnt >= 0){
print(tmpCnt)
tmpCnt--
path.add(tmpstack.pop())
}
return
}else{
val next = stack.peek()
for (i in tickets.indices){
if (usedTicket[i]) continue
if (tickets[i][0] == next){
usedTicket[i] = true
stack.add(tickets[i][1])
visit(tickets, cnt+1, usedTicket)
if (!stack.isEmpty()) stack.pop()
usedTicket[i] = false
}
}
}
}
}
URL: https://programmers.co.kr/learn/courses/30/lessons/43164#
'알고리즘 스터디_문제풀이' 카테고리의 다른 글
[프로그래머스] 2020 카카오 인턴십 키패드 누르기 (0) | 2020.11.17 |
---|---|
프로그래머스 해시 - 위장 with Kotiln (1) | 2020.08.30 |
프로그래머스 깊이/너비 우선 탐색 단어 변환 with Kotlin (1) | 2020.08.26 |
프로그래머스 깊이/너비 우선 탐색 네트워크 with Kotlin (1) | 2020.08.26 |
프로그래머스 깊이/너비 우선 탐색 타겟 넘버 with kotlin (1) | 2020.08.25 |
Comments