Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Week2] 박서윤: ATM, H-Index, 가장 큰 수, 이건 꼭 풀어야 해!, 줄 세우기 #11

Merged
merged 8 commits into from
May 28, 2022
2 changes: 1 addition & 1 deletion src/1week/seoyoon/FindingPrimeNum.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import kotlin.math.sqrt

class Solution {
class Week1SYSolution {
var visited = BooleanArray(7, {false})
val set: MutableSet<Int> = mutableSetOf()
var depth: Int = 0
Expand Down
19 changes: 10 additions & 9 deletions src/1week/seoyoon/MaximizeDiff.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
val n = readln().toInt()
val arr = readln().split(" ").map{it.toInt()}.toIntArray()
var newArr = IntArray(n)
var visited = BooleanArray(n, {false})
var max: Int = Int.MIN_VALUE

fun main() {
permutation(0)
println(max)
}

fun permutation(depth: Int) {
fun permutation(depth: Int): Int {
val n = readln().toInt()
val arr = readln().split(" ").map{it.toInt()}.toIntArray()
var newArr = IntArray(n)
var visited = BooleanArray(n, {false})
var max: Int = Int.MIN_VALUE


if (depth == n) {
var sum = 0;
for (i in 0 until n-1) {
Expand All @@ -29,4 +29,5 @@ fun permutation(depth: Int) {
visited[i] = false
}
}
}
return max
}
2 changes: 1 addition & 1 deletion src/1week/seoyoon/Minecraft.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ fun solution(n: Int, m: Int, b: Int, ground: Array<IntArray>, high: Int, low: In
}
}
print("$ansSec $ansHigh")
}
}
54 changes: 26 additions & 28 deletions src/1week/seoyoon/PressKeypad.kt
Original file line number Diff line number Diff line change
@@ -1,45 +1,43 @@
import java.lang.Math.abs

class MySolution {
fun solution(numbers: IntArray, hand: String): String {
var answer = ""
var LCur: Int = 10
var RCur: Int = 12
fun solution(numbers: IntArray, hand: String): String {
var answer = ""
var LCur: Int = 10
var RCur: Int = 12

for (i in 0 until numbers.size) {
if (numbers[i] == 0) numbers[i] = 11
for (i in 0 until numbers.size) {
if (numbers[i] == 0) numbers[i] = 11

if (numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7) {
if (numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7) {
answer += "L"
LCur = numbers[i]
}
else if (numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9) {
answer += "R"
RCur = numbers[i]
}
else {
var LDis = abs(numbers[i] - LCur)/3 + abs(numbers[i] - LCur)%3
var RDis = abs(numbers[i] - RCur)/3 + abs(numbers[i] - RCur)%3

if (LDis < RDis) {
answer += "L"
LCur = numbers[i]
}
else if (numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9) {
else if (RDis < LDis) {
answer += "R"
RCur = numbers[i]
}
else {
var LDis = abs(numbers[i] - LCur)/3 + abs(numbers[i] - LCur)%3
var RDis = abs(numbers[i] - RCur)/3 + abs(numbers[i] - RCur)%3

if (LDis < RDis) {
answer += "L"
LCur = numbers[i]
}
else if (RDis < LDis) {
if (hand == "right") {
answer += "R"
RCur = numbers[i]
}
else {
if (hand == "right") {
answer += "R"
RCur = numbers[i]
} else {
answer += "L"
LCur = numbers[i]
}
} else {
answer += "L"
LCur = numbers[i]
}
}
}
return answer
}
}
return answer
}
8 changes: 4 additions & 4 deletions src/1week/seoyoon/QuitTheJob.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ fun main() {
val P = IntArray(n + 1)
val arr = IntArray(n + 2)

for (i in 1 .. n) {
val input = readln().split(" ").map{it.toInt()}
for (i in 1..n) {
val input = readln().split(" ").map { it.toInt() }
T[i] = input[0]
P[i] = input[1]
}

for (i in 1 .. n) {
for (i in 1..n) {
if (i + T[i] <= n + 1) {
arr[i + T[i]] = max(arr[i + T[i]], arr[i] + P[i])
}
arr[i + 1] = max(arr[i + 1], arr[i])
}
println(arr[n + 1])
}
}
8 changes: 4 additions & 4 deletions src/1week/seoyoon/SumOfSubsequences.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
var ans:Int = 0
var ans: Int = 0

fun main() {
val (n, s) = readln().split(" ").map{it.toInt()}
val arr = readln().split(" ").map{it.toInt()}.toIntArray()
val (n, s) = readln().split(" ").map { it.toInt() }
val arr = readln().split(" ").map { it.toInt() }.toIntArray()

subSum(n, s, arr,0, 0, 0)
subSum(n, s, arr, 0, 0, 0)

if (s == 0) {
ans--
Expand Down
20 changes: 20 additions & 0 deletions src/2week/seoyoon/ATM.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package `2week`.seoyoon

fun solution(n: Int, arr: IntArray): Int {
var ans = 0
arr.sort()

for (i in 0 until n) {
for (j in 0..i) {
ans += arr[j]
}
}
return ans
}

fun main() {
val n = Integer.parseInt(readln())
val arr = readln().split(" ").map { it.toInt() }.toIntArray()
println(solution(n, arr))
}

15 changes: 15 additions & 0 deletions src/2week/seoyoon/H-Index.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package `2week`.seoyoon

import java.lang.Integer.max
import java.lang.Integer.min

fun solution(citations: IntArray): Int {
var answer = 0
citations.sort()

for (i in 0 until citations.size) {
var min = min(citations[i], citations.size - i)
answer = max(min, answer)
}
return answer
}
14 changes: 14 additions & 0 deletions src/2week/seoyoon/가장 큰 수.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package `2week`.seoyoon

fun main() {
val arr = intArrayOf(6, 10, 2)
println(solution(arr))
}

fun solution(numbers: IntArray): String {
var answer = ""
numbers.sortedWith(Comparator { o1, o2 -> "$o2$o1".compareTo("$o1$o2") })
.forEach { answer += it }

return if (answer.startsWith("0")) "0" else answer
}
36 changes: 36 additions & 0 deletions src/2week/seoyoon/이건 꼭 풀어야 해!.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package `2week`.seoyoon

import java.util.*

fun solution(n: Int, q: Int, arrA: IntArray, arrB: Array<IntArray>) {
val sumArr = IntArray(n)
arrA.sort()
sumArr[0] = arrA[0]

for (i in 1 until n) {
sumArr[i] = sumArr[i - 1] + arrA[i]
}

for (i in 0 until q) {
if (arrB[i][0] == 1 || arrB[i][1] == 1) {
println(sumArr[arrB[i][1] - 1])
}
else {
println(sumArr[arrB[i][1] - 1] - sumArr[arrB[i][0] - 1 - 1])
}
}
}

fun main() {
val (n, q) = readln().split(" ").map{it.toInt()}
val arrA = readln().split(" ").map { it.toInt() }.toIntArray()
val arrB = Array(q, {IntArray(2)})

for (i in 0 until q) {
val st = StringTokenizer(readln())
arrB[i][0] = Integer.parseInt(st.nextToken())
arrB[i][1] = Integer.parseInt(st.nextToken())
}

solution(n, q, arrA, arrB)
}
46 changes: 46 additions & 0 deletions src/2week/seoyoon/줄 세우기.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package `2week`.seoyoon

import java.util.*

fun main() {
val (n, m) = readln().split(" ").map{it.toInt()}
var degree = IntArray(n+1)

val graph : Array<ArrayList<Int>> = Array(n+1){ ArrayList() }
for (i in 1..n) {
graph[i] = ArrayList()
}

for (i in 1 .. m) {
val (A, B) = readln().split(" ").map{it.toInt()}

graph[A].add(B)
degree[B]++
}

val queue: Queue<Int> = LinkedList()
val result: Queue<Int> = LinkedList()

for (i in 1..n) {
if (degree[i] == 0) {
queue.offer(i)
}
}

while (!queue.isEmpty()) {
val node = queue.poll()
result.offer(node)

for (i in graph[node]) {
degree[i]--

if (degree[i] == 0) {
queue.offer(i)
}
}
}

for (i in result) {
print("$i ")
}
}