📜 접근 방법
- 인접하는 좌표 즉, 상하좌우를 계산하는 배열을 만든다 (dx, dy)
- 리스트로 현재 주어진 땅덩어리?를 만든다 ground
- 주어지는 값이 k 만큼이므로 k번 반복한다.
- 입력 받은 x, y에 대해 ground[x][y] 위치에 + 1 해준다.
- 상하좌우를 확인하여 유효할 경우 +1을 해준다.
- ground에 주어진 숫자들을 더한다.
❌ 실패 코드
x와 y에 -1씩 해주는 것을 처음에 하지 않았다.
✅ 정답 코드
# from pprint import pprint
import sys
input = sys.stdin.readline
# 상하좌우
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
n, k = map(int, input().split())
ground = [([0] * n) for _ in range(n)]
for i in range(k):
y, x = map(int, input().split())
y -= 1
x -= 1
# 현재 위치 + 1
ground[x][y] += 1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
# 주어진 리스트 밖에 나가지 않을 경우
if nx >= 0 and nx < n and ny >= 0 and ny < n:
ground[nx][ny] += 1
# pprint(ground)
res = 0
for arr in ground:
res += sum(arr)
print(res)
💡알게 된점
파이썬에 있는 라이브러리들을 좀더 잘 활용해야겠다!
'코딩테스트 > Python' 카테고리의 다른 글
[python 구름] 개미와 진딧물 (0) | 2023.05.14 |
---|---|
[python 구름] 제곱 암호 (0) | 2023.05.13 |
[python 구름] 0커플 (0) | 2023.05.10 |
[python 구름] 대소문자 바꾸기 (0) | 2023.05.06 |
[python] 코딩테스트시 입력처리시 input 함수를 사용하지 않는 이유 (0) | 2023.05.06 |