반응형
문제
https://www.acmicpc.net/problem/2563
풀이
문제의 지문에서 가로, 세로의 크기가 100인 도화지라는 지문을 보고 2차원 배열을 떠올릴 수 있습니다.
이제 가로, 세로가 10인 색종이를 하나씩 붙이는데, x좌표와 y좌표를 입력으로 주어집니다.
범위를 나가는 경우는 없다고 하니, 고려하지 않고 색종이가 붙은 곳의 넓이를 어떻게 구할 수 있을까요?
곂쳐서 붙힌 경우를 어떻게 대처할 수 있을까요?
먼저, 100 * 100인 Bool타입의 2차원 배열을 만들고, 이것을 가로, 세로의 크기가 100인 도화지로 설정합니다.
x좌표와 y좌표를 입력받으면, 2차원 배열의 x부터 x + 10까지, y부터 y + 10까지를 true로 값을 설정해줍니다.
그렇다면 곂치는 부분도 이미 true로 설정되어 있기 때문에 2차원 배열에서 true인 값만 count를 해주면 색종이를 붙힌 넓이를 알아낼 수 있습니다.
고차함수 flatMap을 사용하여 1차원 배열로 바꾼 후, filter를 사용해 true인 값만 카운트 하는 방법을 사용했습니다.
소스코드
후기
2차원 배열에 대한 이해와, 곂치는 부분에 대한 생각을 해야할 것 같습니다.
문제의 그림을 보면 y축이 위로 올라가는데, 어차피 아래로 있는거랑 구하는 것은 동일하기 때문에 신경쓰지 않고 구현해도 되는 문제였습니다.
반응형
'PS > 백준' 카테고리의 다른 글
[BOJ] 백준 2743 단어 길이 재기 (Swift) (0) | 2023.02.22 |
---|---|
[BOJ] 백준 11382 꼬마 정민 (Swift) (0) | 2023.02.22 |
[BOJ] 백준 2566 최댓값 (Swift) (0) | 2023.02.16 |
[BOJ] 백준 2738 행렬 덧셈 (Swift) (0) | 2023.02.16 |
[BOJ] 백준 9020 골드바흐의 추측 (Swift) (0) | 2023.02.16 |