Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions week7/week7_1/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/

### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Mac OS ###
.DS_Store
8 changes: 8 additions & 0 deletions week7/week7_1/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week7/week7_1/.idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions week7/week7_1/.idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions week7/week7_1/.idea/libraries/KotlinJavaRuntime.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week7/week7_1/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions week7/week7_1/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week7/week7_1/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

60 changes: 60 additions & 0 deletions week7/week7_1/src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import java.util.Arrays
import java.util.LinkedList
import java.util.Queue
import kotlin.concurrent.fixedRateTimer

val vertical = arrayOf(2, -2, 1 , -1, 1, -1, -2, 2)
val horizontal = arrayOf(1, -1, 2, -2, -2, 2, 1, -1)
lateinit var resultArray: Array<Int>


fun main() {
val L = readLine()?.toInt() ?: return
resultArray = Array(L){ 0 }

for(i in 0 until L){
val n = readLine()?.toInt() ?: return
val chess = Array(n){Array(n){0}}
val (startX, startY) = readLine()?.split(" ")?.map { it.toInt() } ?: return
val (endX, endY) = readLine()?. split(" ")?.map { it.toInt() } ?: return

resultArray[i] = bfs(chess, startX, startY, endX, endY, n)
}
resultArray.forEach {it->
println(it)
}
}

fun bfs(chess: Array<Array<Int>>, startX: Int, startY: Int, endX: Int, endY: Int, n: Int): Int{
val queue: Queue<Pair<Int, Int>> = LinkedList<Pair<Int, Int>>()
queue.offer(Pair(startX, startY))
chess[startX][startY] = 1
var cnt = 0

while (queue.isNotEmpty()) {
val queueSize = queue.size

for(i in 0 until queueSize){
val index = queue.poll()
if (index.first == endX && index.second == endY) {
return cnt
}

for (j in 0 until 8) {
val curX: Int = index.first + vertical[j]
val curY: Int = index.second + horizontal[j]

if (isValidPosition(n, curX, curY) && chess[curX][curY] == 0) {
chess[curX][curY] = 1
queue.offer(Pair(curX, curY))
}
}
}
cnt++
}
return -1
}

fun isValidPosition(n: Int, x: Int, y: Int): Boolean{
return x in 0 until n && y in 0 until n
}
15 changes: 15 additions & 0 deletions week7/week7_1/week7_1.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/kotlin" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/kotlin" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
</component>
</module>
29 changes: 29 additions & 0 deletions week7/week7_2/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/

### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Mac OS ###
.DS_Store
8 changes: 8 additions & 0 deletions week7/week7_2/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week7/week7_2/.idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions week7/week7_2/.idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions week7/week7_2/.idea/libraries/KotlinJavaRuntime.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week7/week7_2/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions week7/week7_2/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week7/week7_2/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

73 changes: 73 additions & 0 deletions week7/week7_2/src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import java.util.LinkedList
import java.util.Queue
import java.util.Scanner
import java.util.StringTokenizer
import kotlin.properties.Delegates

lateinit var connected: Array<Array<Int>>
lateinit var dfsVisited: Array<Boolean>
lateinit var visited: Array<Array<Boolean>>
lateinit var apart: Array<Int>
val dx = arrayOf(0, 0, 1, -1)
val dy = arrayOf(1, -1, 0, 0)
var appartNum = 0
var N = 0


fun main() {
N = readLine()?.toInt() ?: return
val scanner = Scanner(System.`in`)
connected = Array(N){ Array(N) { 0 } }
visited = Array(N){ Array(N) { false } }
apart = Array(N*N){ 0 }

for(i in 0 until N){
val input = readLine()
for(j in 0 until N){
connected[i][j] = input?.get(j)?.toString()?.toInt() ?: 0
}
}

for(i in 0 until N){
for(j in 0 until N){
if(connected[i][j] == 1 && !visited[i][j]){
appartNum++
BFS(i, j)
}
}
}

apart.sort()
println("$appartNum")

apart.forEach { v->
if(v != 0) println(v)
}

}

fun BFS(x : Int, y : Int){
val q: Queue<IntArray> = LinkedList()
q.add(intArrayOf(x, y))
visited[x][y] = true
apart[appartNum]++

while(!q.isEmpty()){
val curX = q.peek()[0]
val curY = q.peek()[1]
q.poll()

for(i in 0 until 4){
val nx = curX + dx[i]
val ny = curY + dy[i]

if(nx >= 0 && ny >= 0 && nx < N && ny < N){
if(connected[nx][ny] == 1 && !visited[nx][ny]){
q.add(intArrayOf(nx, ny))
visited[nx][ny] = true
apart[appartNum]++
}
}
}
}
}
15 changes: 15 additions & 0 deletions week7/week7_2/week7_2.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/kotlin" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/kotlin" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
</component>
</module>