[백준] 15685번: 드래곤 커브 (Python)

2023. 3. 27. 17:21·코딩테스트/백준

 

 

 

 

 

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

 

15685번: 드래곤 커브

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

www.acmicpc.net

 

 

 

 

 

✅  Solution

  • 90도를 어떻게 이동시킬지에 대한 아이디어가 중요한 문제였다. 하지만 난 생각 못하고 풀이를 봐버렸다. 하 너무 어렵
  • 예제 1로 예시를 들어보려고 한다.
    • 이동해야 할 방향 4개 (0, 1, 2, 3)을 먼저 생각해 봤다.
    • 0세대 : 0 
    • 1세대 : 0 1
    • 2세대 : 0, 1, 2, 1
    • 3세대 : 0, 1, 2, 1, 2, 3, 2, 1
  • 위에서 규칙을 찾아보면 새로 추가된 선분들은 이미 있었던 선분을 뒤집어 + 1 (만약 4 이상이면 0) 방향으로 움직인 다는 것을 알 수 있다.
    • 2세대로 예를 들면 0 1 (이미 존재한 선분) -> 1 0 (뒤집기) -> 2, 1 (1씩 더하기)
  • 그럼 규칙대로 추가될 선분들의 방향을 찾아주고 이동시켜 주면 된다. 
  • 그리고 전체를 돌면서 네 선분이 모두 있는 (사각형을 만들 수 있는) 것을 카운트해 주면 된다.

 

 

 

 

 

✅  Code

import sys
input = sys.stdin.readline

n = int(input())
graph = [[0] * 101 for _ in range(101)]

# 0, 1, 2, 3 방향
dx = [1, 0, -1, 0]
dy = [0, -1, 0, 1]


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

    curve = [d]
    
    # 추가될 선분의 방향을 찾아줌
    for i in range(g):
        for j in range(len(curve) - 1, -1, -1):
            curve.append((curve[j] + 1) % 4)

    # 범위 내에 있으면 선분 있음을 의미하는 1로 값 재할당해주고 이어서 진행
    for i in curve:
        nx = x + dx[i]
        ny = y + dy[i]

        if 0 <= nx < 101 and 0 <= ny < 101:
            graph[nx][ny] = 1
            x, y = nx, ny

answer = 0

# 사각형 카운트
for i in range(100):
    for j in range(100):
        if graph[i][j] and graph[i + 1][j] and graph[i][j + 1] and graph[i + 1][j + 1]:
            answer += 1

print(answer)

 

 

저작자표시 (새창열림)

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] 14499번: 주사위 굴리기 (Python)  (0) 2023.04.03
[백준] 17144번: 미세먼지 안녕! (Python)  (0) 2023.03.28
[백준] 14891번: 톱니바퀴 (Python)  (0) 2023.03.27
[백준] 11404번: 플로이드  (0) 2023.03.07
[백준] 16234번: 인구 이동 (Python)  (0) 2023.03.07
'코딩테스트/백준' 카테고리의 다른 글
  • [백준] 14499번: 주사위 굴리기 (Python)
  • [백준] 17144번: 미세먼지 안녕! (Python)
  • [백준] 14891번: 톱니바퀴 (Python)
  • [백준] 11404번: 플로이드
ye0nn
ye0nn
프론트엔드 개발자의 개발기록
  • ye0nn
    영차영차
    ye0nn
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • CS (0)
        • 운영체제 (0)
        • 네트워크 (0)
        • 알고리즘 & 자료구조 (0)
      • 코딩테스트 (48)
        • 프로그래머스 (40)
        • 백준 (8)
      • 프로그래밍 (11)
        • 프론트엔드 (3)
        • 자바스크립트 (0)
        • 스위프트 (7)
        • 파이썬 (1)
      • 취준기록 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
ye0nn
[백준] 15685번: 드래곤 커브 (Python)
상단으로

티스토리툴바