아이공의 AI 공부 도전기

[Baekjoon] 15685번 : 드래곤 커브 (Python, 구현)

 

     

 

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

 

15685번: 드래곤 커브

첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커

www.acmicpc.net

코드 링크

https://github.com/stellaluminary/Baekjoon

 

GitHub - stellaluminary/Baekjoon

Contribute to stellaluminary/Baekjoon development by creating an account on GitHub.

github.com

 

Python

 

방법 1 - 메모리 30840KB / 시간 80ms / 코드 길이 671B

 

본문에서 사용하는 x, y가 아닌 일반적인 그래프에서 사용하는 y, x로 변형하여 문제를 풀이함.

몇 세대인지에 따라 curve 방향을 통한 결과 도출

 

도출한 curve로 각 좌표별 방문 표기

 

1x1 정사각형에 해당하는 개수 세기

 

그림 참조) https://tmdrl5779.tistory.com/146

 

[백준] 15685번 (python 파이썬)

구현, 시뮬레이션 문제이다. 여기서 중요한것은 일단 x, y좌표가 바뀐것이고 이전 드래곤 커브에서 90도를 돌린 것을 어떻게 붙일것인지? 이것만 금방 생각한다면 쉽게 풀 수 있다. ( 근데 어떻게

tmdrl5779.tistory.com

 

n = int(input())
graph = [[0] * 101 for _ in range(101)]
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]

for i in range(n) :
    y, x, d, g = map(int, input().split())
    graph[x][y] = 1

    curve = [d]
    for j in range(g):
        for k in range(len(curve) - 1, -1, -1):
            curve.append((curve[k] + 1) % 4)

    for j in range(len(curve)):
        x += dx[curve[j]]
        y += dy[curve[j]]
        if not 0 <= x < 101 or not 0 <= y < 101:
            continue
        graph[x][y] = 1

result = 0
for i in range(100):
    for j in range(100):
        if [graph[i][j],graph[i+1][j], graph[i][j+1], graph[i+1][j+1]] == [1,1,1,1]:
            result += 1
print(result)

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading