[A&I Code Camp] Day48

Hood·2024년 11월 13일

A&I Code Camp

목록 보기
37/38
post-thumbnail

✍   Kotlin을 PS 문제 풀기

소속중인 A&I 동아리에서 코딩역량을 강화하고자
코딩캠프를 진행하며 작성한 포스트입니다.
해당 포스트는 kotlin을 기반으로 작성합니다.


구현

이번 주 주제는 구현입니다.
백준에 하루 한 문제를 풀어가며 작성할 것입니다.

2563번

https://www.acmicpc.net/problem/2563

이 문제는 100 x 100 도화지 안에서 10 x 10 크기의 색종이의 좌표를 받고 겹치는 부분을 제외한 색종이가 있는 부분의 넓이를 구하는 문제 입니다.

Solve

  1. 색종이가 몇 개 인지 입력을 받습니다.
  2. 도화지의 크기가 100x100이니 2차원 배열을 통해 도화지를 만들어줍니다.
  3. 색종이의 갯수만큼 반복을 도는데 그 사이에 색종이의 좌표를 받아줍니다.
  4. 이중 반복문을 통해 색종이의 x좌표에서 10만큼 더 간 부분과
    y좌표에서 10만큼 더 간 부분이 넓이 이므로 그것을 true로 만들어주며
    만약 이미 true라면 그 부분은 겹치는 부분으로 반복을 넘겨주는
    continue를 사용하여 넘겨줍니다. 그 사이에 넓이를 구해줄 result를 증가시킵니다.
  5. 이후 크기를 담은 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)
}

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글