🐣안녕하세요 머리가 나쁘면 몸이 고생한다의 표본, 머리 나쁜애 역을 맡고있습니다.
대기실은 5개이며, 각 대기실은 5x5 크기입니다.
거리두기를 위하여 응시자들 끼리는 맨해튼 거리1가 2 이하로 앉지 말아 주세요.
단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다.
5개의 대기실을 본 죠르디는 각 대기실에서 응시자들이 거리두기를 잘 기키고 있는지 알고 싶어졌습니다. 자리에 앉아있는 응시자들의 정보와 대기실 구조를 대기실별로 담은 2차원 문자열 배열 places가 매개변수로 주어집니다. 각 대기실별로 거리두기를 지키고 있으면 1을, 한 명이라도 지키지 않고 있으면 0을 배열에 담아 return 하도록 solution 함수를 완성해 주세요.
풀이도 없음 그냥 모든 경우의 수 if elif else 해줌
더 좋은 방법이 있겠지만 꼴도 보기싫다. 공부 열씨미 해야지
def cheak(place):
x = [-1,1,0,0,-1,1,-1,1,2,-2,0,0]
y = [0,0,1,-1,1,1,-1,-1,0,0,2,-2]
for i in range(5):
for j in range(5):
if place[i][j] =="P":
for c in range(12):
if 0 <= i+x[c] <5 and 0 <= j+y[c] < 5:
if place[i+x[c]][j+y[c]] == 'P':
if x[c] + y[c] == 0 or abs(x[c] + y[c]) == 2:
if x[c] == -1 and y[c] == 1:
if place[i-1][j] != "X" or place[i][j+1] !="X": return 0
elif x[c] == 1 and y[c] == 1:
if place[i][j+1] != "X" or place[i+1][j] !="X": return 0
elif x[c] == -1 and y[c] == -1:
if place[i-1][j] != "X" or place[i][j-1] !="X": return 0
elif x[c] == 1 and y[c] == -1:
if place[i][j-1] != "X" or place[i+1][j] !="X": return 0
elif abs(x[c]) == 2:
if x[c] == 2:
if place[i+1][j] != "X": return 0
else:
if place[i-1][j] != "X": return 0
elif abs(y[c]) == 2:
if y[c] == 2:
if place[i][j+1] != "X": return 0
else:
if place[i][j-1] != "X": return 0
else:
return 0
return 1
def solution(places):
answer = []
for n in range(len(places)): answer.append(cheak(places[n]))
return answer