forked from ndb796/python-for-coding-test
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path6.py
More file actions
28 lines (27 loc) ยท 1.65 KB
/
6.py
File metadata and controls
28 lines (27 loc) ยท 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# ํ์ฌ ์ค์น๋ ๊ตฌ์กฐ๋ฌผ์ด '๊ฐ๋ฅํ' ๊ตฌ์กฐ๋ฌผ์ธ์ง ํ์ธํ๋ ํจ์
def possible(answer):
for x, y, stuff in answer:
if stuff == 0: # ์ค์น๋ ๊ฒ์ด '๊ธฐ๋ฅ'์ธ ๊ฒฝ์ฐ
# '๋ฐ๋ฅ ์' ํน์ '๋ณด์ ํ์ชฝ ๋ ๋ถ๋ถ ์' ํน์ '๋ค๋ฅธ ๊ธฐ๋ฅ ์'๋ผ๋ฉด ์ ์
if y == 0 or [x - 1, y, 1] in answer or [x, y, 1] in answer or [x, y - 1, 0] in answer:
continue
return False # ์๋๋ผ๋ฉด ๊ฑฐ์ง(False) ๋ฐํ
elif stuff == 1: # ์ค์น๋ ๊ฒ์ด '๋ณด'์ธ ๊ฒฝ์ฐ
# 'ํ์ชฝ ๋๋ถ๋ถ์ด ๊ธฐ๋ฅ ์' ํน์ '์์ชฝ ๋๋ถ๋ถ์ด ๋ค๋ฅธ ๋ณด์ ๋์์ ์ฐ๊ฒฐ'์ด๋ผ๋ฉด ์ ์
if [x, y - 1, 0] in answer or [x + 1, y - 1, 0] in answer or ([x - 1, y, 1] in answer and [x + 1, y, 1] in answer):
continue
return False # ์๋๋ผ๋ฉด ๊ฑฐ์ง(False) ๋ฐํ
return True
def solution(n, build_frame):
answer = []
for frame in build_frame: # ์์
(frame)์ ๊ฐ์๋ ์ต๋ 1,000๊ฐ
x, y, stuff, operate = frame
if operate == 0: # ์ญ์ ํ๋ ๊ฒฝ์ฐ
answer.remove([x, y, stuff]) # ์ผ๋จ ์ญ์ ๋ฅผ ํด๋ณธ ๋ค์
if not possible(answer): # ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฌผ์ธ์ง ํ์ธ
answer.append([x, y, stuff]) # ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฌผ์ด ์๋๋ผ๋ฉด ๋ค์ ์ค์น
if operate == 1: # ์ค์นํ๋ ๊ฒฝ์ฐ
answer.append([x, y, stuff]) # ์ผ๋จ ์ค์น๋ฅผ ํด๋ณธ ๋ค์
if not possible(answer): # ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฌผ์ธ์ง ํ์ธ
answer.remove([x, y, stuff]) # ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฌผ์ด ์๋๋ผ๋ฉด ๋ค์ ์ ๊ฑฐ
return sorted(answer) # ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ