Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 거리두기 확인하기 [Python, 파이썬] KAKAO 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/81302
- 🔑 P 일 때 자기 자리와 상하좌우 자리의 값을 -1 하고 최종적으로 -2 이하인 값이 있는 대기실은 거리두기 실패
- 파티션의 위치는 큰 값을 주고 -2 아래로 내려가는 일을 없게 한다.
- -2가 있다는 것은 맨해튼 거리 2 내에 사람이 있다는 의미이다.
def makeMap(p): # 겹치는 구간 표시 할 5*5 리스트
newMap = [[0] * 5 for _ in range(5)]
for i in range(5):
for j in range(5):
if p[i][j] == 'X': # 파티션은 100으로 지정하자
newMap[i][j] = 100
return newMap
def solution(places):
answer = []
nx, ny = [0, 0, 1, -1], [1, -1, 0, 0] # 상하좌우
for p in places: # 대기실 하나씩 확인
newMap = makeMap(p)
for i in range(5):
for j in range(5):
if p[i][j] == 'P': # 응시자 앉아 있으면
newMap[i][j] -= 1 # 자기자리 1내려
for n in range(4): # 상하좌우 확인 해보자
x, y = i+nx[n], j+ny[n]
if 0 <= x < 5 and 0 <= y < 5: # 범위 안 벗어나게
newMap[x][y] -= 1 # 상하좌우 자리 1내려
sw = 0
for i in range(5):
for j in range(5):
if newMap[i][j] <= -2: # -2보다 작으면
sw = 1
answer.append(0) # 거리두기 실패
break
if sw == 1:
break
else:
answer.append(1)
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.3 합승 택시 요금 [Python, 파이썬] KAKAO (2) | 2023.10.14 |
---|---|
[프로그래머스] Lv.2 문자열 압축 [Python, 파이썬] KAKAO (0) | 2023.10.14 |
[프로그래머스] Lv.2 삼각 달팽이 [Python, 파이썬] (0) | 2023.10.12 |
[프로그래머스] Lv.2 수식 최대화 [Python, 파이썬] KAKAO (0) | 2023.10.11 |
[프로그래머스] Lv.2 괄호 변환 [Python, 파이썬] KAKAO (1) | 2023.10.10 |
Comments