구름 먼데이 챌린지 2-4 + 고찰

su-mmer·2022년 10월 20일
0

문제풀이

목록 보기
38/43
post-thumbnail

구름 먼데이 챌린지 참여하기

문제

입력

출력

예제

  • 입력1
3 3
3 3
3 3
1 1
  • 출력1
9
  • 입력2
4 4
1 1
4 4
3 3
2 4
  • 출력2
15

풀이

  • 2차원 배열 파악하기
  1. [1][1]부터 [n][n]까지 정사각형을 분할한다.
  2. 나누어진 사각형 중 하나에 폭탄이 떨어진다.
  3. 폭탄은 십자가 모양으로 터지고 범위에 1이 증가한다.
  4. 모든 값의 합을 출력하라.

파이썬 코드

  • 나는 if 문을 이용해서 십자가 모양으로 갈 수 있는지 확인하고 +1을 해주도록 구현했었다(dx, dy가 기억이 안났음)
  • deque()의 사용
    - deque는 스택과 큐의 기능을 둘 다 가진다.
    - append(), appendleft(), pop(), popleft()
    - insert(), remove() 리스트처럼 중간 내용을 수정하거나 새 항목을 입력하고 삭제할 수 있다.
    - reverse()
    - extend(), extendleft()
# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
import sys
input = sys.stdin.readline
from collections import deque

dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]

n, k = map(int, input().split())
square = [[0 for _ in range(n)] for _ in range(n)] # 2차원 배열 생성
q = deque()

# 좌표를 입력받아서 q에 좌표 추가
for _ in range(k):
	a, b = map(int, input().split())
	q.append([a-1], [b-1]) # 컴퓨터 배열은 0,0부터 시작이니까
	
while q :
	x, y = q.popleft() # 왼쪽에서 좌표 빼기(첫번째 좌표)
	square[x][y] += 1 # 해당 좌표에 +1
	
	# 십자가 모양 확인하면서 +1
	for i in range(4):
		nx = x + dx[i]
		ny = y + dy[i]
		# index가 out of range인지 확인하면서 +1
		if 0 <= nx < n and 0 <= y < n:
			square[nx][ny] += 1
			
# 2차원 배열 돌면서 모든 값 더하기
result = 0
for i in square:
	result += sum(i)
	
print(result)

오... 때깔나..

2주차 고찰

생각보다 재밌다..! 나.. 코테 노잼인간.. 그치만 도장깨기 스탬프 찍기 이런거 좋아해서 일주일에 도장 2개씩 받아가니까 재밌다^,^

0개의 댓글