-
[Programmers] ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น with PythonPS 2021. 11. 28. 02:32728x90๋ฐ์ํ
๐ programmers - [๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น]
๐ก ์กฐ๊ฑด
5 <= n <= 100
1 <= ์ ๋ ฅ๋ฐ์ ๊ธฐ๋ฅ๊ณผ ๋ณด์ ๊ฐ์ <= 1000
`์ ๋ ฅ๋ฐ์ ๊ธฐ๋ฅ ํน์ ๋ณด์ ์ ๋ณด์ ๋ฐ์ดํฐ ๊ฐ์ == 4'
- ๋ฐ๋ฅ์ ๋ณด๋ฅผ ์ค์นํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
๋ฒฝ๋ฉด์ ๋ฒ์ด๋๊ฒ ์ค์นํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
๊ตฌ์กฐ๋ฌผ์ ๊ต์ฐจ์ ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณด๋ ์ค๋ฅธ์ชฝ, ๊ธฐ๋ฅ์ ์์ชฝ ๋ฐฉํฅ์ผ๋ก ์ค์น ๋๋ ์ญ์ ํ๋ค.
๊ตฌ์กฐ๋ฌผ์ด ๊ฒน์น๊ฑฐ๋, ์๋ ๊ฒ์ ์ญ์ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- ๊ตฌํ&์๋ฎฌ๋ ์ด์ ๋ฌธ์
- ๋ฐํํ๋ ๋ฐ์ดํฐ๋
x
,y
,๊ธฐ๋ฅ
์์ผ๋ก ์ ๋ ฌํ์ฌ ๋ฐํํ๋ค.
๐ฅ ์์ค ์ฝ๋
def check(answer): for x, y, a in answer: if a: # ๋ณด """๋ณด๋ ํ์ชฝ ๋ ๋ถ๋ถ์ด ๊ธฐ๋ฅ ์์ ์๊ฑฐ๋, ๋๋ ์์ชฝ ๋ ๋ถ๋ถ์ด ๋ค๋ฅธ ๋ณด์ ๋์์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํฉ๋๋ค.""" if y != 0 and([x + 1, y - 1, 0] in answer or [x, y - 1, 0] in answer or ([x - 1, y, 1] in answer and [x + 1, y, 1] in answer)): continue else: return False else: # ๊ธฐ๋ฅ """๊ธฐ๋ฅ์ ๋ฐ๋ฅ ์์ ์๊ฑฐ๋ ๋ณด์ ํ์ชฝ ๋ ๋ถ๋ถ ์์ ์๊ฑฐ๋, ๋๋ ๋ค๋ฅธ ๊ธฐ๋ฅ ์์ ์์ด์ผ ํฉ๋๋ค.""" if y == 0 or [x - 1, y, 1] in answer or [x, y, 1] in answer or [x, y - 1, 0] in answer: continue else: return False return True def solution(n, build_frame): answer = [] for frame in build_frame: x, y, a, b = frame if b: # install answer.append([x, y, a]) if not check(answer): answer.remove([x, y, a]) else: # remove answer.remove([x, y, a]) if not check(answer): answer.append([x, y, a]) return sorted(answer)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
n = 5 build_frame = [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]]
์คํ๊ฒฐ๊ณผ
[[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]]
โจ๏ธ ๋ฌธ์ ํ์ด
build_frame
์ ์ํํ๋ฉด์, ๊ฐframe
์์x
,y
,a
,b
๋ฅผ ๊ตฌ๋ณํ์ฌ ์๋ฎฌ๋ ์ด์ ์ ํฉ๋๋ค.
a ๋ ๊ธฐ๋ฅ๊ณผ ๋ณด์ ๊ตฌ๋ณ, b๋ ์ฝ์ , ์ญ์ ์ ๊ตฌ๋ณ์ ์ฌ์ฉํฉ๋๋ค.๋ง์ฝ
b
๊ฐ ์ฝ์ ์ ํด๋นํ ๊ฒฝ์ฐ,(x, y, a)
๋ฅผanswer
์ ์ ์ฅํ๊ณcheck()
ํจ์๋ฅผ ํธ์ถํ์ฌ
๋ฐฉ๊ธ ์ธ์ด ๊ตฌ์กฐ๋ฌผ์ด ์ ์ฒด์ ์ผ๋ก ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฌผ์ธ์ง ํ์ธํฉ๋๋ค.check
ํจ์์์False
๋ฅผ ๋ฐํํ ๊ฒฝ์ฐ,answer
์์(x, y, a)
๋ฅผ ์ญ์ ํฉ๋๋ค.check
ํจ์์์True
๋ฅผ ๋ฐํํ ๊ฒฝ์ฐ, ๋์ด๊ฐ๋๋ค.๋ง์ฝ
b
๊ฐ ์ญ์ ์ ํด๋นํ ๊ฒฝ์ฐ,(x, y, a)
๋ฅผanswer
์์ ์ญ์ ํฉ๋๋ค.check
ํจ์์์False
๋ฅผ ๋ฐํํ ๊ฒฝ์ฐ,answer
์์(x, y, a)
๋ฅผ ๋ค์ ์ถ๊ฐํฉ๋๋ค.check
ํจ์์์True
๋ฅผ ๋ฐํํ ๊ฒฝ์ฐ, ๋์ด๊ฐ๋๋ค.check
ํจ์์์๋ ํ์ฌ ๊ตฌ์กฐ๋ฌผ์ด ์ ์์ธ์ง์ ๋ํด ํ๋ณํฉ๋๋ค.ํ์ฌ ๊ฒ์ฌํ๋ ๊ตฌ์กฐ๋ฌผ์ ์ข ๋ฅ๊ฐ
๋ณด
๋ผ๋ฉด ์๋์ ์กฐ๊ฑด์ ํด๋นํ์ง ์๋ ๊ฒฝ์ฐ,False
๋ฅผ ๋ฐํํฉ๋๋ค.if y != 0 and([x + 1, y - 1, 0] in answer or [x, y - 1, 0] in answer or ([x - 1, y, 1] in answer and [x + 1, y, 1] in answer)):
ํ์ฌ ๊ฒ์ฌํ๋ ๊ตฌ์กฐ๋ฌผ์ ์ข ๋ฅ๊ฐ
๊ธฐ๋ฅ
์ด๋ผ๋ฉด ์๋์ ์กฐ๊ฑด์ ํด๋นํ์ง ์๋ ๊ฒฝ์ฐ,True
๋ฅผ ๋ฐํํฉ๋๋ค.if y == 0 or [x - 1, y, 1] in answer or [x, y, 1] in answer or [x, y - 1, 0] in answer:
๐พ ๋๋์
- check ํจ์๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ํ์ด ๋ค์๋ค.
- ๊ตฌํ ์ฐ์ต์ ๋ฐ๋ณต๋ง์ด ๋ต์ด ์๋๊ฐ ์ถ๋ค. ๋ ์ด์ฌํ ํ์ด์ผ๊ฒ ๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2304 ์ฐฝ๊ณ ๋ค๊ฐํ with Python (0) 2021.11.29 [Programmers] ์๋ฌผ์ ์ ์ด์ with Python (0) 2021.11.29 [Programmers] ํ๋ณดํค with Python (0) 2021.11.27 [Programmers] ์คํ์ฑํ ๋ฐฉ with Python (0) 2021.11.21 [๋ฐฑ์ค] 14725 ๊ฐ๋ฏธ๊ตด with Python (0) 2021.11.21