링크

도둑질

난이도

  • 프로그래머스 난이도 2인데 3수준
    • 노가다처럼 풀었기때문에 시간을 많이 먹었다.
    • 좀 짜증나는 문제

문제요약

  • 5*5로 된 방에 사람P 파티션X 빈공간O일때 맨해튼거리 2보다 크게 떨어지는게 거리두기조건, 중간에 파티션으로 막히면 거리두기 조건 유지
  • 각 방의 정보를 보고 유지를 하고있으면 1, 유지를 못하고있으면 0으로 출력

접근

  • 복잡하게 생각할게 없이 조건에 맞게 구현했다.
    • 5*5로 고정

간단 알고리즘

  • 5*5방을 전부 확인
    • 이중 반복문 사용
    • 하지만 좌측상단에서 우측하단으로 배열이 순환하기 때문에 해당 칸이 P일때 우측1칸, 우측2칸, 우상,우하,하1칸,하2칸만 확인하면 모든 인원을 조사가 가능
    • 우,하 1칸씩 확인
    • 우2,하2 2칸일대는 사이에 X가 확인
    • 우상
      • 우1 X, 위1 X 확인 둘중 하나라도 X가 없으면 거리유지 안된것
    • 우하
      • 우1 X, 아래1 X 확인

후기

  • 뭔가 빠르게 풀릴거 같은 문제라고 복잡하게 생각하지 않고 조건에 맞게 구현을 해야했다.
  • 다만 상하좌우 전부 보지않고 우측과 우측하단, 우측상단, 하단만 보면 중복으로 확인할것없이 확인이 된다는점이 시간을 줄이는 팁이었다.