[ 프로그래머스 / PYTHON ] 거리두기 확인하기

yujeongkwon·2022년 6월 27일
0

프로그래머스 / PYTHON

목록 보기
34/77

🐣안녕하세요 머리가 나쁘면 몸이 고생한다의 표본, 머리 나쁜애 역을 맡고있습니다.

문제설명

거리두기 확인하기

대기실은 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
profile
인생 살자.

0개의 댓글