Notice
Recent Posts
Recent Comments
12-05 04:22
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 정규화
- github
- SQLD
- react
- SAA-C02
- 백준 11059
- 데이터베이스
- ROWNUM
- 파이썬
- 리스트 컴프리헨션
- 백준 24499 파이썬
- 프로그래머스 조건에 맞는 개발자 찾기
- join
- AWS
- sql
- 백준 크리문자열
- 백준 2852
- 알고리즘
- 깃허브
- 백준 1756
Archives
- Today
- Total
-
[백준 14890] 경사로 - 파이썬 본문
반응형
문제
https://www.acmicpc.net/problem/14890
풀이 방법
지나갈 수 있는 길인지 체크할 때,
- 높이가 같은 경우 : 그냥 넘어감
- 높이가 2 이상 차이 나는 경우 : False 반환
- 왼쪽이 더 높은 경우 : 경사로를 놓을 공간이 있는지 체크 후 경사로 설치
- 오른쪽이 더 높은 경우 : 경사로를 놓을 공간이 있는지 체크 후 경사로 설치
로 나눠서 풀어야 한다.
이 때, 경사로를 설치한 곳에는 중복해서 설치할 수 없기 때문에 bridge 라는 리스트를 만들어 해당 위치에 경사로를 설치했다는 것을 표시해놓아야 한다.
또한 가로를 모두 체크했으면 이제 배열을 90도 회전해 세로를 체크해야 한다.
코드
n, l = map(int, input().split())
floor = [list(map(int, input().split())) for _ in range(n)]
def check(board):
bridge = [False for i in range(n)]
for i in range(n-1):
if board[i] == board[i+1]: #높이가 같은 경우
continue
if abs(board[i] - board[i+1]) >= 2: #높이가 2이상 차이나는 경우
return False
if board[i] > board[i+1]: #왼쪽이 더 높은 경우
for j in range(i+1, i+1+l):
if 0 <= j < n:
if board[j] != board[i+1]:
return False
if bridge[j] == True:
return False
bridge[j] = True
else:
return False
else: #오른쪽이 더 높은 경우
for j in range(i, i-l, -1):
if 0 <= j < n:
if board[j] != board[i]:
return False
if bridge[j] == True:
return False
bridge[j] = True
else:
return False
return True
def rotate(n, arr): #기존 배열 90도로 돌리는 함수
ret = [[0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
ret[j][n-1-i] = arr[i][j]
return ret
ans = 0
for i in floor: #가로로 지나갈 수 있는 길 체크
if check(i):
ans += 1
floor = rotate(n, floor)
for i in floor: #세로로 지나갈 수 있는 길 체크
if check(i):
ans += 1
print(ans)
반응형
'Algorithm' 카테고리의 다른 글
[백준 2116] 주사위쌓기 - 파이썬 (0) | 2024.02.28 |
---|---|
[백준 16922] 로마 숫자 만들기 - 파이썬 (0) | 2024.02.27 |
[백준 21608] 상어 초등학교 - 파이썬 (0) | 2024.02.18 |
[백준 12904] A와 B - 파이썬 (0) | 2024.02.16 |
[백준 2638] 치즈 - 파이썬 (0) | 2024.02.15 |
Comments