코딩테스트 거리두기 확인하기 문제풀이

프로그래머스 거리두기 확인하기(level 2) 문제풀이

def solution(places):
    result = []
    for n in range(len(places)):
        c=1
        for i in range(5):
            if c == 0:
                break
            for j in range(5):
                if places[n][i][j] == 'P':
                    if dis(places[n], i, j) == 0:
                        c = 0
                        break
        if c == 1:
            result.append(1)
        else:
            result.append(0)
    
    return result

def dis(places, x, y):
    dir = [(-1,0),(1,0),(0,-1),(0,1)] #상하좌우
    for d in dir:
        if 4>=x+d[0]>=0 and 4>=y+d[1]>=0:
            if places[x+d[0]][y+d[1]] == 'P':
                print(x+d[0]," ",y+d[1])
                return 0
            if places[x+d[0]][y+d[1]] == 'X':
                continue
            for j in dir:
                if 4>=x+d[0]+j[0]>=0 and 4>=y+d[1]+j[1]>=0:
                    if d[0]+j[0] == 0 and d[1]+j[1] == 0:
                        continue
                    if places[x+d[0]+j[0]][y+d[1]+j[1]] == 'P':
                        print(x+d[0]+j[0]," ",y+d[1]+j[1])
                        return 0
    return 1

우갸갹갹
각 인덱스마다 맨허튼 2거리만큼 조사를 한다 첫번째 방향에서 X표시가 나오면 continue를 한다.

좋은 웹페이지 즐겨찾기