15685 - 드래곤 커브
2022. 6. 10. 10:46ㆍ2022/BaekJoon_삼성 SW 역량 테스트 기출
Point 1
0: x좌표가 증가하는 방향 (→)
1: y좌표가 감소하는 방향 (↑)
2: x좌표가 감소하는 방향 (←)
3: y좌표가 증가하는 방향 (↓)
* 일반적으로는 y는 가로로 증가 또는 감소하며, x는 세로로 증가 또는 감소한다. 하지만 이 문제에서는 x가 가로 방향으로 증가 또는 감소하며, y가 세로 방향으로 증가 또는 감소하는 것으로 정의하였다.
Point 2
- 0 세대
- 1 세대
- 2세대
- 3세대
위의 그림과 같이 세대별 방향을 보면 이전 세대의 역순 + 1 이라는 규칙성을 발견할 수 있다.
0세대 | 0 |
1세대 | 0 + 1 |
2세대 | 0, 1 + 2, 1 |
3세대 | 0, 1, 2, 1 + 2, 3, 2, 1 |
from copy import deepcopy
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]
N = int(input())
graph = [[0]*101 for _ in range(101)]
for _ in range(N):
# 일반적인 x와 y 위치가 바뀌어야한다.
y, x, d, g = map(int, input().split())
graph[x][y] = 1
# 누적 방형 좌표가 있는 리스트
dList = [d]
# 새롭게 움직이는 좌표만 있는 리스트
q = [d]
for _ in range(g+1):
for k in q:
x += dx[k]; y += dy[k]
graph[x][y] = 1
q = list(map(lambda x : (x+1)%4, dList))
q.reverse()
dList.extend(q)
cnt = 0
for r in range(101):
for c in range(101):
if (0<=r+1<101) and (0<=c+1<101):
if graph[r][c] and graph[r+1][c] and graph[r][c+1] and graph[r+1][c+1]:
cnt += 1
print(cnt)
'2022 > BaekJoon_삼성 SW 역량 테스트 기출' 카테고리의 다른 글
17140 - 이차원 배열과 연산 (0) | 2022.07.07 |
---|---|
17143 - 낚시왕 (0) | 2022.06.25 |
16234 - 인구 이동 (0) | 2022.05.13 |
15684 - 사다리조작 (0) | 2022.05.11 |
15686 - 치킨배달 (0) | 2022.05.10 |