본문 바로가기

컴퓨터/코테

프로그래머스 - 거리두기 확인 (카카오 2021 인턴)

import math
def check(place, p1,p2) : 
    y1, x1 = p1
    y2, x2 = p2
    
    if x1 == x2 : 
        if y2 - y1 > 2 : 
            return True
        if place[y2-1][x1] == 'X' : 
            return True
        return False
    elif y1 == y2 : 
        if x2 - x1 > 2 : 
            return True
        elif place[y1][x2-1] == 'X' : 
            return True
        return False
    else : 
        if abs(x2-x1) + y2-y1 > 2: 
            return True
        if place[y1][x2] == 'X' and place[y2][x1] == 'X' : 
            return True
        return False

def solution(places):
    answer = []
    
    for place in places : 
        pos = []
        for y in range(5) : 
            for x in range(5) : 
                if place[y][x] == 'P' : 
                    pos.append([y,x])
        flag = True
        for i in range(len(pos)-1) : 
            for j in range(i+1,len(pos)) : 
                if not check(place, pos[i],pos[j]) :
                    answer.append(0)
                    flag = False
                    break
            if not flag : 
                break
        if flag : 
            answer.append(1)
    return answer

아침에 비몽사몽 푼 문제. 한방에 풀어서 잠깼다 ㅋㅋㅋㅋㅋ 조건체크를 많이 넣었는데 이렇게 단순하게 푸는게 맞나 싶다