일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 17144번
- python
- 19238번
- 15686번
- 14499번
- SW ExpertAcademy
- HTML 기초
- 수식 최대화
- 키패드 누르기
- 2020 카카오 인턴십
- 12865번
- 베스트엘범
- 프로그래머스
- 백준 알고리즘
- 어른 상어
- 빛의 경로 사이클
- 16234번
- 보석 쇼핑
- 12869번
- QueryDSL 기초
- 스타트 택시
- 파이썬
- 9095번
- 1789번
- 경주로 건설
- 1038번
- SW Expert Academy
- 감소하는 수
- 거울 설치
- 미세먼지 안녕!
Archives
- Today
- Total
보물창고 블로그
백준 알고리즘 15685번 드래곤 커브 풀이 with Python 본문
728x90
문제 링크: https://www.acmicpc.net/problem/15685
15685번: 드래곤 커브
첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커브의 시작 점, d는 시작 방향, g는 세대이다. (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10) 입력으로 주어지는 드래곤 커브는 격자 밖으로 벗어나지 않는다. 드래곤 커브는 서로 겹칠 수 있다. 방향은 0, 1, 2,
www.acmicpc.net
문제는 아래와 같습니다.
이 문제의 핵심은 드래곤 커브를 받았을 때 그 드래곤 커브를 알맞게 구현하는 것과 드래건 커브의 포인트들 중에서 사각형을 찾는 것이 핵심입니다. 아래는 제가 해결한 코드입니다.
# x,y와 방향 d, 세대 g 그리고 드래곤 커브의 좌표값을 저장할 딕셔너리 dict1
def dragon(x, y, d, g, dict1):
dx = [1, 0, -1, 0]
dy = [0, -1, 0, 1]
dict1[(x, y)] = 1
list1 = [d]
x += dx[d]
y += dy[d]
dict1[(x, y)] = 1
for _ in range(g):
sub = []
for i in range(len(list1)-1, -1, -1):
x += dx[(list1[i] + 1) % 4]
y += dy[(list1[i] + 1) % 4]
dict1[(x, y)] = 1
sub.append((list1[i] + 1) % 4)
list1 += sub
n = int(input())
answer = 0
dic1 = {}
# n개의 드래곤 커브를 dict1에 좌표값에 저장한다.
for _ in range(n):
x, y, d, g = map(int, input().split())
dragon(x, y, d, g, dic1)
# 좌표값들 중에 나는 왼쪽 상단을 기준으로 3개의 점이 있으면 사각형이 된다고 하였다.
for i in list(dic1.keys()):
count = 0
nx = i[0]
ny = i[1]
if dic1.get((i[0] + 1, i[1])) == 1:
count += 1
if dic1.get((i[0], i[1] + 1)) == 1:
count += 1
if dic1.get((i[0] + 1, i[1] + 1)) == 1:
count += 1
if count == 3:
answer += 1
print(answer)
'알고리즘 풀이 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 14500번 테트로미노 풀이 with Python (0) | 2020.02.25 |
---|---|
백준 알고리즘 3055번 탈출 풀이 with Python (0) | 2020.02.23 |
백준 알고리즘 12100번 2048 풀이 with Python (0) | 2020.02.01 |
백준 알고리즘 13458번 시험감독 풀이 with Python (0) | 2020.02.01 |
백준 알고리즘 13460번 구슬탈출 풀이 with Python (0) | 2020.01.16 |
Comments