- ์ด ๋ฌธ์ ๋ kotlin์ผ๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
- ๋ฐฐ์ด์ ๊ตฌํ ํ์ ๋ต์ ๊ตฌํ๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์์ง๋ง ์๊ฐ์ด๊ณผ๋ฅผ ํผํ ์ ์์ต๋๋ค.
- ํด๋น ๋ฌธ์ ๋ ๋ฐฐ์ด์ ๊ตณ์ด ๊ตฌํ ํ์์์ด ๊ท์น์ ์ ํ์
ํ๋ฉด ์ํ๋ ์ง์ ๋ถํฐ ๊ฐ์ ๊ตฌํ ์ ์์ต๋๋ค.
- 1๋ฒ์งธ ํ์์๋ 1๋ฒ์งธ ์ด๊น์ง 1๋ก ์ฑ์ฐ๊ณ ์ดํ๋ถํฐ๋ 1์ฉ ์ฆ๊ฐํฉ๋๋ค.
2๋ฒ์งธ ํ์์๋ 2๋ฒ์งธ ์ด๊น์ง 2๋ก ์ฑ์ด ํ 1์ฉ ์ฆ๊ฐํฉ๋๋ค.
...
n๋ฒ์งธ ํ์์๋ n๋ฒ์งธ ์ด๊น์ง n์ผ๋ก ์ฑ์๋๋ค.
class Solution {
fun solution(n: Int, left: Long, right: Long): IntArray {
var answer = mutableListOf<Long>()
var start_row = left/n; var start_col = left%n
var end_row = right/n; var end_col = right%n;
if(start_row == end_row){
for(i in start_col..end_col){
if(i<=start_row) answer.add(start_row + 1)
else answer.add(i+1)
}
}else{
for(i in start_col until n){
if(i<=start_row) answer.add(start_row + 1)
else answer.add(i+1)
}
for(i in start_row+1 until end_row){
for(j in 0 until n.toLong()){
if(j<=i) answer.add(i+1)
else answer.add(j+1)
}
}
for(i in 0..end_col){
if(i<=end_row) answer.add(end_row+1)
else answer.add(i+1)
}
}
return answer.map { it.toInt()}.toIntArray();
}
}
- ์์ ๊ท์น์ ์ ์๊ฐํ๋ฉด index/n ๊ณผ index%n ์ค์์ ์ต๋๊ฐ์ด ๋ฐฐ์ด์ ๊ฐ์ด ๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
- ํด๋น ๋ฌธ์ ํ์ด ์ intArray์ ArrayList<Int> ๋ฅผ ์ ๊ตฌ๋ณํ์ฌ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๊ฒ ํ ์ ์์ต๋๋ค.
import kotlin.math.max
class Solution {
fun solution(n: Int, left: Long, right: Long): IntArray {
return (left..right).map{ (max(it/n, it%n)+1).toInt() }.toIntArray()
}
}