
소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
해당 포스트는kotlin을 기반으로 작성합니다.
이번 주 주제는 구현입니다.
백준에 하루 한 문제를 풀어가며 작성할 것입니다.
https://www.acmicpc.net/problem/2563
이 문제는 100 x 100 도화지 안에서 10 x 10 크기의 색종이의 좌표를 받고 겹치는 부분을 제외한 색종이가 있는 부분의 넓이를 구하는 문제 입니다.
- 색종이가 몇 개 인지 입력을 받습니다.
- 도화지의 크기가 100x100이니 2차원 배열을 통해 도화지를 만들어줍니다.
- 색종이의 갯수만큼 반복을 도는데 그 사이에 색종이의 좌표를 받아줍니다.
- 이중 반복문을 통해 색종이의 x좌표에서 10만큼 더 간 부분과
y좌표에서 10만큼 더 간 부분이 넓이 이므로 그것을 true로 만들어주며
만약 이미 true라면 그 부분은 겹치는 부분으로 반복을 넘겨주는
continue를 사용하여 넘겨줍니다. 그 사이에 넓이를 구해줄 result를 증가시킵니다.- 이후 크기를 담은 result를 출력해줍니다.
import java.io.StreamTokenizer
fun main() = with(StreamTokenizer(System.`in`.bufferedReader())){
fun nextInt() : Int { nextToken(); return nval.toInt() }
val n = nextInt()
val square = Array(100){ Array(100) { false } }
var result = 0
repeat(n) {
val x = nextInt(); val y = nextInt()
for(i in x..< x + 10){
for(j in y..< y + 10){
if(square[i][j]){
continue
}
square[i][j] = true
result++
}
}
}
println(result)
}
