프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr



BFS 탐색과 값을 저장한 countArr을 통해 문제를 해결했다:
1. 모든 곳을 확인한다고 가정했을때 그 타일이 "P"값이라면?
2. 들어가서 주위에 있는 모든 칸 (위, 아래, 옆들)을 확인해서:
- 같은 "P"라면 리턴
- "O"라면 countArr에 그 위치에서 + 1
3. 만약 "O"를 찾았는데 그 칸의 위치가 2 이상이라면 거리두기 실패로 False 리턴
4. 만약 다 탐색해서 올바른 자리에 있다면 "True'리턴
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
def search(board):
countArr = [[0] * 5 for _ in range(5)]
for x in range(5):
for y in range(5):
if board[x][y] == "P":
for i in range(4):
ux = dx[i] + x
uy = dy[i] + y
if 0 <= ux < 5 and 0 <= uy < 5:
if board[ux][uy] == "P": return False
if board[ux][uy] == "O":
countArr[ux][uy] += 1
if countArr[ux][uy] > 1:
return False
return True
def solution(places):
answer = []
for board in places:
answer.append(1) if search(board) else answer.append(0)
return answer
반응형
'알고리즘 & 자료구조 > Programmers' 카테고리의 다른 글
| [프로그래머스] - 방금그곡 w/ Python (0) | 2024.04.17 |
|---|