๐ฆ ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
ํ๋ก๊ทธ๋๋จธ์ค Level2
[Level2] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
๋ฌธ์ ์ค๋ช
๊ฐ๋ฐ์๋ฅผ ํฌ๋งํ๋ ์ฃ ๋ฅด๋๊ฐ ์นด์นด์ค์ ๋ฉด์ ์ ๋ณด๋ฌ ์์ต๋๋ค.
์ฝ๋ก๋ ๋ฐ์ด๋ฌ์ค ๊ฐ์ผ ์๋ฐฉ์ ์ํด ์์์๋ค์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฌ์ ๋๊ธฐ๋ฅผ ํด์ผํ๋๋ฐ ๊ฐ๋ฐ ์ง๊ตฐ ๋ฉด์ ์ธ ๋งํผ ์๋์ ๊ฐ์ ๊ท์น์ผ๋ก ๋๊ธฐ์ค์ ๊ฑฐ๋ฆฌ๋ฅผ ๋๊ณ ์๋๋ก ์๋ดํ๊ณ ์์ต๋๋ค. 1. ๋๊ธฐ์ค์ 5๊ฐ์ด๋ฉฐ, ๊ฐ ๋๊ธฐ์ค์ 5x5 ํฌ๊ธฐ์ ๋๋ค. 2. ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์ํ์ฌ ์์์๋ค ๋ผ๋ฆฌ๋ ๋งจํดํผ ๊ฑฐ๋ฆฌ1๊ฐ 2 ์ดํ๋ก ์์ง ๋ง์ ์ฃผ์ธ์. 3. ๋จ ์์์๊ฐ ์์์๋ ์๋ฆฌ ์ฌ์ด๊ฐ ํํฐ์ ์ผ๋ก ๋งํ ์์ ๊ฒฝ์ฐ์๋ ํ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด,
5๊ฐ์ ๋๊ธฐ์ค์ ๋ณธ ์ฃ ๋ฅด๋๋ ๊ฐ ๋๊ธฐ์ค์์ ์์์๋ค์ด ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์ ๊ธฐํค๊ณ ์๋์ง ์๊ณ ์ถ์ด์ก์ต๋๋ค. ์๋ฆฌ์ ์์์๋ ์์์๋ค์ ์ ๋ณด์ ๋๊ธฐ์ค ๊ตฌ์กฐ๋ฅผ ๋๊ธฐ์ค๋ณ๋ก ๋ด์ 2์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด places๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๊ฐ ๋๊ธฐ์ค๋ณ๋ก ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ผ๋ฉด 1์, ํ ๋ช ์ด๋ผ๋ ์งํค์ง ์๊ณ ์์ผ๋ฉด 0์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
- places์ ํ ๊ธธ์ด(๋๊ธฐ์ค ๊ฐ์) = 5
- places์ ๊ฐ ํ์ ํ๋์ ๋๊ธฐ์ค ๊ตฌ์กฐ๋ฅผ ๋ํ๋ ๋๋ค.
- places์ ์ด ๊ธธ์ด(๋๊ธฐ์ค ์ธ๋ก ๊ธธ์ด) = 5
- places์ ์์๋ P,O,X๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์
๋๋ค.
- places ์์์ ๊ธธ์ด(๋๊ธฐ์ค ๊ฐ๋ก ๊ธธ์ด) = 5
- P๋ ์์์๊ฐ ์์์๋ ์๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
- O๋ ๋น ํ ์ด๋ธ์ ์๋ฏธํฉ๋๋ค.
- X๋ ํํฐ์ ์ ์๋ฏธํฉ๋๋ค.
- ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ 5๊ฐ ๋๊ธฐ์ค์ ํฌ๊ธฐ๋ ๋ชจ๋ 5x5 ์ ๋๋ค.
- return ๊ฐ ํ์
- 1์ฐจ์ ์ ์ ๋ฐฐ์ด์ 5๊ฐ์ ์์๋ฅผ ๋ด์์ return ํฉ๋๋ค.
- places์ ๋ด๊ฒจ ์๋ 5๊ฐ ๋๊ธฐ์ค์ ์์๋๋ก, ๊ฑฐ๋ฆฌ๋๊ธฐ ์ค์ ์ฌ๋ถ๋ฅผ ์ฐจ๋ก๋๋ก ๋ฐฐ์ด์ ๋ด์ต๋๋ค.
- ๊ฐ ๋๊ธฐ์ค ๋ณ๋ก ๋ชจ๋ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ผ๋ฉด 1์, ํ ๋ช ์ด๋ผ๋ ์งํค์ง ์๊ณ ์์ผ๋ฉด 0์ ๋ด์ต๋๋ค.
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
์ฒซ ๋ฒ์งธ ๋๊ธฐ์ค
. 0 1 2 3 4
0 P O O O P
1 O X X O X
2 O P X P X
3 O O X O X
4 P O X X P
- ๋ชจ๋ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ต๋๋ค.
๋ ๋ฒ์งธ ๋๊ธฐ์ค
No. 0 1 2 3 4
0 P O O P X
1 O X P X P
2 P X X X O
3 O X X X O
4 O O O P P
- (0, 0) ์๋ฆฌ์ ์์์์ (2, 0) ์๋ฆฌ์ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ง ์์ต๋๋ค.
- (1, 2) ์๋ฆฌ์ ์์์์ (0, 3) ์๋ฆฌ์ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ง ์์ต๋๋ค.
- (4, 3) ์๋ฆฌ์ ์์์์ (4, 4) ์๋ฆฌ์ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ง ์์ต๋๋ค.
์ธ ๋ฒ์งธ ๋๊ธฐ์ค
No. 0 1 2 3 4
0 P X O P X
1 O X O X P
2 O X P O X
3 O X X O P
4 P X P O X
- ๋ชจ๋ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ต๋๋ค.
๋ค ๋ฒ์งธ ๋๊ธฐ์ค
No. 0 1 2 3 4
0 O O O X X
1 X O O O X
2 O O O X X
3 O X O O X
4 O O O O O
- ๋๊ธฐ์ค์ ์์์๊ฐ ์์ผ๋ฏ๋ก ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ต๋๋ค.
๋ค์ฏ ๋ฒ์งธ ๋๊ธฐ์ค
No. 0 1 2 3 4
0 P X P X P
1 X P X P X
2 P X P X P
3 X P X P X
4 P X P X P
- ๋ชจ๋ ์์์๊ฐ ๊ฑฐ๋ฆฌ๋๊ธฐ๋ฅผ ์งํค๊ณ ์์ต๋๋ค.
๋ ๋ฒ์งธ ๋๊ธฐ์ค์ ์ ์ธํ ๋ชจ๋ ๋๊ธฐ์ค์์ ๊ฑฐ๋ฆฌ๋๊ธฐ๊ฐ ์ง์ผ์ง๊ณ ์์ผ๋ฏ๋ก, ๋ฐฐ์ด [1, 0, 1, 1, 1]์ return ํฉ๋๋ค.
์ ํ์๊ฐ ์๋ด
- ์ ํ์ฑ ํ ์คํธ : 10์ด
โป ๊ณต์ง - 2022๋ 4์ 25์ผ ํ ์คํธ์ผ์ด์ค๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
๋ ํ ์ด๋ธ T1, T2๊ฐ ํ๋ ฌ (r1, c1), (r2, c2)์ ๊ฐ๊ฐ ์์นํ๊ณ ์๋ค๋ฉด, T1, T2 ์ฌ์ด์ ๋งจํดํผ ๊ฑฐ๋ฆฌ๋ |r1 - r2| + |c1 - c2| ์ ๋๋ค.
๐ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ
์ฒ์์๋ BFS๋ก ์ ๊ทผํ์๋ค.
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์๋ฌด P๋ก๋ถํฐ BFS๋ก ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๊ณ ์์ง ๋ฐฉ๋ฌธํ์ง ์๋ P๋ก๋ถํฐ ๋ค์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ ๊ตฌํด๋๊ฐ๋ค.
์ด ๊ณผ์ ์ ๊ณ์ ๋ฐ๋ณตํ๋ฉด์ ์ค๊ฐ์ โ๊ฑฐ๋ฆฌโง2โ๊ฐ ๋์ค๋ฉด 0์ ๋ฐฐ์ด์ ์ถ๊ฐ์ํค๊ณ
๋ค ๋์์์๋ ๋ถ๊ตฌํ๊ณ โ๋ชจ๋ ๊ฑฐ๋ฆฌ < 2โ์ด๋ฉด 1์ ์ถ๊ฐ์ํจ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ์ค๊ณํ๊ณ ์ฝ๋๋ฅผ ์ง๋ ค๋๊น ๋๋ฌด ์ด๋ ค์์ ๋ธ๋ฃจํธ ํฌ์ค๋ก ๋ ธ์ ์ ํ์๋ค.
์ด์ฐจํผ ์ ๋ ฅ ์ ํ์ฌํญ๋ ์ผ๋ง ๋์ง์์์ ์๊ฐ์ด๊ณผ๋ ๋์ง ์์ ๊ฒ ๊ฐ์๋ค.
๐ ๊ณผ์ ์ค๊ณ/๊ด๋ฆฌ
๐จ๐ปโ๐ป CODE
def matrix_slice(r1,r2,c1,c2,board):
new_board = []
for i in range(r1,r2+1):
new_board.append(board[i][c1:c2+1])
return new_board
def partition_check(r1,r2,c1,c2,board):
new_board = matrix_slice(r1,r2,c1,c2,board)
for i in range(len(new_board)):
for j in range(len(new_board[i])):
if new_board[i][j] == 'O':
return False
return True
def manhatton(r1,r2,c1,c2):
return abs(r2-r1)+abs(c2-c1)
def solution(places):
answer = []
for k in range(5):
temp = []
for i in range(5):
for j in range(5):
if places[k][i][j] == 'P':
temp.append((i,j))
flag = True
for i in range(len(temp)):
if flag == False:
break
for j in range(i,len(temp)):
if flag == False:
break
if temp[i] == temp[j]:
continue
r1 = min(temp[i][0],temp[j][0])
r2 = max(temp[i][0],temp[j][0])
c1 = min(temp[i][1],temp[j][1])
c2 = max(temp[i][1],temp[j][1])
distance = manhatton(r1,r2,c1,c2)
if distance == 2:
if partition_check(r1,r2,c1,c2,places[k]) == False:
flag = False
if distance == 1:
flag = False
if flag == False:
answer.append(0)
else:
answer.append(1)
return answer