Skip to content

Commit e8a7b84

Browse files
authored
Merge pull request #24 from kogorithm/week4_jaewon
[Week4] 김재원 : 트리의 부모 찾기, 회의실 배정, 주차 요금 계산
2 parents 20ebd5a + 13d060e commit e8a7b84

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed
+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class jaewon_Solution {
2+
fun solution(fees: IntArray, records: Array<String>): IntArray {
3+
var answer: IntArray = intArrayOf()
4+
val keys = records.groupBy{it.split(" ")[1]}
5+
val blank = keys.keys.associateWith{0}.toMutableMap()
6+
7+
keys.values.forEach{ key ->
8+
val times = key.map{(it.split(" ")[0].split(":"))}.flatten().toMutableList()
9+
if(times.size%4 != 0){
10+
times.add("23")
11+
times.add("59")
12+
}
13+
var i = 0
14+
var total = 0
15+
repeat(times.size/4){
16+
// 입출차 셋트
17+
var h = (times[i+2].toInt()-times[i].toInt()) * 60
18+
var m = times[i+3].toInt()-times[i+1].toInt()
19+
total += h+m
20+
i+=4
21+
}
22+
blank[key[0].split(" ")[1]] = total
23+
}
24+
25+
answer = blank.mapValues{
26+
val v = it.value
27+
var temp = 0
28+
if(fees[0] < v){
29+
val add = if((v-fees[0])%fees[2] != 0) (v-fees[0])/fees[2]+1 else (v-fees[0])/fees[2]
30+
temp = add*fees[3]
31+
}
32+
fees[1] + temp
33+
}.toList().sortedBy{it.first}.map{it.second}.toIntArray()
34+
return answer
35+
}
36+
}
37+
38+
fun main(){
39+
jaewon_Solution().solution(
40+
intArrayOf(180,5000,10,600), arrayOf("05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT")
41+
)
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import java.lang.StringBuilder
2+
import java.util.LinkedList
3+
4+
fun main(){
5+
val n = readln().toInt()
6+
val tree = Array(n+1){ LinkedList<Int>()}
7+
val visited = BooleanArray(n+1){ false }
8+
val parents = IntArray(n+1){-1}
9+
//인접리스트 만들기
10+
repeat(n-1){
11+
val (a,b) = readln().split(" ").map { it.toInt() }
12+
tree[a].add(b)
13+
tree[b].add(a)
14+
}
15+
16+
fun dfs(n: Int){
17+
for(num in tree[n]){
18+
if(!visited[num]) {
19+
visited[num] = true
20+
parents[num] = n
21+
dfs(num)
22+
}
23+
}
24+
}
25+
26+
dfs(1)
27+
val answer = StringBuilder()
28+
for (i in 2..n){
29+
answer.append("${parents[i]}\n")
30+
}
31+
println(answer.toString())
32+
}

src/3week/jaewon/회의실 배정.kt

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
class jaewon회의실배정 {
3+
4+
data class TimeTable(val start : Int, val end : Int)
5+
6+
fun solution(){
7+
val n = readln().toInt()
8+
val timeTable = mutableListOf<TimeTable>()
9+
var endTime = 0
10+
var count = 0
11+
12+
repeat(n){
13+
val (start,end) = readln().split(" ").map { it.toInt() }
14+
timeTable.add(TimeTable(start, end))
15+
}
16+
17+
timeTable
18+
.sortedWith( compareBy<TimeTable> { it.end }.thenBy { -(it.end - it.start) })
19+
.forEach {
20+
if (it.start >= endTime){
21+
count++
22+
endTime = it.end
23+
}
24+
}
25+
26+
println(count)
27+
}
28+
}
29+
30+
fun main(){
31+
jaewon회의실배정().solution()
32+
}
33+

0 commit comments

Comments
 (0)