링크
도둑질
난이도
- 프로그래머스 난이도 2인데 3수준
- 노가다처럼 풀었기때문에 시간을 많이 먹었다.
- 좀 짜증나는 문제
문제요약
- 5*5로 된 방에 사람P 파티션X 빈공간O일때 맨해튼거리 2보다 크게 떨어지는게 거리두기조건, 중간에 파티션으로 막히면 거리두기 조건 유지
- 각 방의 정보를 보고 유지를 하고있으면 1, 유지를 못하고있으면 0으로 출력
접근
- 복잡하게 생각할게 없이 조건에 맞게 구현했다.
간단 알고리즘
- 5*5방을 전부 확인
- 이중 반복문 사용
- 하지만 좌측상단에서 우측하단으로 배열이 순환하기 때문에 해당 칸이 P일때 우측1칸, 우측2칸, 우상,우하,하1칸,하2칸만 확인하면 모든 인원을 조사가 가능
- 우,하 1칸씩 확인
- 우2,하2 2칸일대는 사이에 X가 확인
- 우상
- 우1 X, 위1 X 확인 둘중 하나라도 X가 없으면 거리유지 안된것
- 우하
후기
- 뭔가 빠르게 풀릴거 같은 문제라고 복잡하게 생각하지 않고 조건에 맞게 구현을 해야했다.
- 다만 상하좌우 전부 보지않고 우측과 우측하단, 우측상단, 하단만 보면 중복으로 확인할것없이 확인이 된다는점이 시간을 줄이는 팁이었다.