일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- is not allowed to impersonate hive (state=08S01
- 자소서 시간 줄이기
- mac hive 3
- Resources are low on NN
- code=0)
- 자소서 빨리 쓰는 법
- hive beeline 에러
- mac hadoop
- mac hadoop 설정
- mac hive
- hive beeline 설정
- 이더리움
- Safe mode is ON
- 자소서 너무 오래 걸림
- 자소서 빨리
- Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000
- 카카오 2020 코딩테스트
- hive beeline
- hadoop safe mode
- mac hadoop 3
- 도커 교과서
- 기업 조사 빨리 하는 법
- hive beeline 실행
- 이더리움 #ethereum
- hadoop safe mode leave
- 카카오 자물쇠와 열쇠
- Failed to connect to localhost:10000
- 카카오 2020 코테
- 백준 18428
- mac hadoop 설치
Archives
- Today
- Total
A seeker after truth
백준 18428: 완전탐색, dfs bfs, 백트래킹 이 아닌 풀이 방법으로 pypy3 정답 코드들 중 실행시간 기준 전체 6등! 본문
Algorithm/문제풀이
백준 18428: 완전탐색, dfs bfs, 백트래킹 이 아닌 풀이 방법으로 pypy3 정답 코드들 중 실행시간 기준 전체 6등!
dr.meteor 2022. 6. 22. 10:04사실 이게 dbfs 문제라고 했을 떄 감을 못잡았었다... 그냥 어렴풋한 감만 있는 느낌이었고, 애초에 그렇게 푸는게 왠지 비효율적일 것 같다고 생각이 들어서 이 풀이를 고안했다.
정석적인 풀이는 가능한 모든 빈공간 3개를 조합으로 뽑아서, 거기에 블록 놔보고 이게 정답 처리가 될수있는지 아닌지를 따져서 푸는 문제다. 저번에 푼 그 뱀 문제였나? 그거랑 매우 유사하다. 풀이 보니까 다들 그렇게 풀었고 나처럼 푼 사람은 나밖에 없었다!!!
454개 pypy3 코드 중
import sys
from collections import deque, defaultdict, Counter
input = sys.stdin.readline
N = int(input())
mapShape, teachers, obstacles, obstacles_cnt = deque([]), deque([]), defaultdict(set), deque([])
answer = True
for x in range(N):
mapShape.append(list(map(str, input().split())))
for y in range(N):
if mapShape[x][y] == "T":
teachers.append((x, y))
for x, y in teachers:
for up in range(x - 1, -1, -1):
if mapShape[up][y] == "S":
if up != x - 1:
for x_ in range(up+1, x):
obstacles[((x, y), "up")].add((x_, y))
obstacles_cnt.append((x_, y))
else:
answer = False
break
if not answer:
print("NO")
break
for down in range(x + 1, N):
if mapShape[down][y] == "S":
if down != x + 1:
for x_ in range(x+1, down):
obstacles[((x, y), "down")].add((x_, y))
obstacles_cnt.append((x_, y))
else:
answer = False
break
if not answer:
print("NO")
break
for left in range(y - 1, -1, -1):
if mapShape[x][left] == "S":
if left != y - 1:
for y_ in range(left+1, y):
obstacles[((x, y), "left")].add((x, y_))
obstacles_cnt.append((x, y_))
else:
answer = False
break
if not answer:
print("NO")
break
for right in range(y + 1, N):
if mapShape[x][right] == "S":
if right != y + 1:
for y_ in range(y + 1, right):
obstacles[((x, y), "right")].add((x, y_))
obstacles_cnt.append((x, y_))
else:
answer = False
break
if not answer:
print("NO")
break
if answer:
obstacles_cnt = Counter(obstacles_cnt)
obstacles_cnt = set(filter(lambda k: obstacles_cnt[k] >= 2, obstacles_cnt.keys()))
cnt = len(obstacles_cnt)
for v in obstacles.values():
if not v.intersection(obstacles_cnt):
cnt += 1
if cnt <= 3:
print("YES")
else:
print("NO")
'Algorithm > 문제풀이' 카테고리의 다른 글
백준 1963 풀기 (0) | 2023.12.12 |
---|---|
2020 카카오 <자물쇠와 열쇠> 12줄 짜리 숏코드 (0) | 2022.06.22 |
백준 1753 메모리 초과 오류 났던 이유 (0) | 2021.12.01 |
프로그래머스 정렬 문제(2) (작성중) (0) | 2020.01.25 |
exercism raindrops solution (0) | 2020.01.24 |