๐ ๋ฌธ์
๐ง ์๊ฐ์ ํ๋ฆ
์ ๋ ฅ๊ฐ์ "์์น๊ฐ ๊ฐ์ ๋ ์ ์ ์๋ค" ๋ผ๋ ๋ถ๋ถ์์ ์ค๋ณต ๊ฐ ์ ์ฅ์ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
์ด 2๊ฐ์ง๋ก ํ์ดํ ์ ์๋ค.
(1) ์ผ๋จ ๋ชจ๋ ์ซ์๋ฅผ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ ๋ด๊ณ ์ ๋ ฌํ์
y ๊ธฐ์ค ์ ๋ ฌ -> x ๊ธฐ์ค ์ ๋ ฌ (stable)
(2) SortedSet์ ์ฌ์ฉํ์ โ๏ธ
=> ์ ์ด์ ๋ด๊ธธ ๋ ๋ถํฐ ์ฐ์ ์์์ ์ํด ์๋ ์ ๋ ฌ์ด ๋๋ ์๋ฃ๊ตฌ์กฐ๋ก
์ ๋ ฌ์ ์ฐ์ ์์์ธ 'comparator' ๋ง ์ ์ํด์ฃผ๋ฉด ๋๋ค.
๐ ํ์ด
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
import kotlin.Comparator
import kotlin.collections.HashSet
enum class Position {
xPos,
yPos
}
fun main() {
val bufferedReader = BufferedReader(InputStreamReader(System.`in`))
val bufferedWriter = BufferedWriter(OutputStreamWriter(System.`out`))
val testCaseCount : Int = bufferedReader.readLine().toInt()
// ์ด ๋ฌธ์ ์์ set ์ ์ฌ์ฉํ ์ ์๋ ๊ทผ๊ฑฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฌธ์ฅ์ "์์น๊ฐ ๊ฐ์ ๋ ์ ์ ์๋ค." ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
// comparator ์ ์ ์์ ๋ฐ๋ผ ๊ฐ์ ์ฐ์ ์์๋ก ํ๋จ๋ ๊ฒฝ์ฐ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ insert ํ ๋ ๋ฌด์๋ฉ๋๋ค.
val positionSet = HashSet<IntArray>(testCaseCount).toSortedSet(Comparator<IntArray> {firstPosition, secondPosition->
when {
// y ์ขํ๋ฅผ ๋น๊ตํด์ ๋ท๋์ด ๋ ์์ผ๋ฉด ๋ฐ๊ฟ์ (์ค๋ฆ์ฐจ์)
firstPosition[Position.yPos.ordinal] > secondPosition[Position.yPos.ordinal] -> 1
firstPosition[Position.yPos.ordinal] < secondPosition[Position.yPos.ordinal] -> -1
else -> { // y ์ขํ๊ฐ ๊ฐ๋ค๋ฉด?
// x ์ขํ๋ฅผ ๋น๊ตํด์ ์ ๋ ฌ!
// compareTo : Returns zero if this object is equal to the specified other object
firstPosition[Position.xPos.ordinal].compareTo(secondPosition[Position.xPos.ordinal])
}
}
})
for (i in 1..testCaseCount) {
StringTokenizer(bufferedReader.readLine()).also {
val x = it.nextToken().toInt()
val y = it.nextToken().toInt()
positionSet.add(intArrayOf(x, y))
}
}
positionSet.forEach {
bufferedWriter.write("${it[Position.xPos.ordinal]} ${it[Position.yPos.ordinal]}\n")
}
bufferedWriter.close()
}
'Algorithm > Algorithm (๋ฌธ์ ํ์ด)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1158] ์์ธํธ์ค ๋ฌธ์ (2) | 2021.03.06 |
---|---|
[Geeks for Geeks] Insert a node in a BST (0) | 2021.02.23 |
[Geeks for Geeks] Validate an IP Address (0) | 2021.02.20 |
[C++] Iterator (0) | 2021.02.20 |
[Geeks For Geeks] Reverse words in a given String (0) | 2021.02.18 |