2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ
Lv2. ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
https://programmers.co.kr/learn/courses/30/lessons/81302
๐ธ ๋ด๊ฐ ์๊ฐํ ์ ๊ทผ ๋ฐฉ๋ฒ
๋๊ธฐ์ค์ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ผ๋ฏ๋ก, P๊ฐ ๋ฑ์ฅํ์ ๋ ๊ฑฐ๋ฆฌ๋๊ธฐ ์กฐ๊ฑด์ ์์งํจ ์ํฉ์ 3๊ฐ์ง๋ก ๋๋ ์ ์์
- ๋ฐ๋ก ์ธ์ ํ ์์น์ P๊ฐ ๋ฑ์ฅํ ๋
- 2์นธ ๋จ์ด์ง ๊ฐ๋ก,์ธ๋ก ์์น์ P๊ฐ ๋ฑ์ฅํ๋๋ฐ ์ฌ์ด์ X๊ฐ ์์ ๋
- 1์นธ ๋๊ฐ์ ์ P๊ฐ ๋ฑ์ฅํ๋๋ฐ ๊ฐ๋ก,์ธ๋ก 1์นธ์ X๊ฐ ์์ ๋
๊ฒฝ์ฐ์ ์๊ฐ ๋ช๊ฐ ์๋๊ณ , ์ํฉ์ด ๋ฑ๋ฑ ์ ํด์ ธ ์์ด์ ๊ทธ๋ฅ ์ผ์ผํ for, if๋ฌธ ์์ฑํด ์คฌ์!
๊ฒฝ์ฐ์ ์๊ฐ ์ ์ด์ ๊ด์ฐฎ์๋ฐ ์ปค์ง๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
def solution(places):
answer = []
for i in places:
x, y = 0, 0
if check(i, x, y) == True : answer.append(1)
else: answer.append(0)
return answer
def check(place, x, y):
for i in place:
y = 0
for j in i:
if j == "P":
for a, b in [0,1], [1,0], [0,-1],[-1,0]:
if x+a<0 or x+a>4 or y+b<0 or y+b>4: continue
if place[x+a][y+b] == "P":
return False
for a, b, c, d in [0,2,0,1], [0,-2,0,-1], [2,0,1,0], [-2,0,-1,0]:
if x+a<0 or x+a>4 or y+b<0 or y+b>4: continue
if place[x+a][y+b] == "P":
if place[x+c][y+d] != "X":
return False
for a, b, c, d, e, f in [1,1,0,1,1,0], [1,-1,1,0,0,-1], [-1,1,0,1,-1,0], [-1,-1,-1,0,0,-1]:
if x+a<0 or x+a>4 or y+b<0 or y+b>4: continue
if place[x+a][y+b] == "P":
if place[x+c][y+d] != "X" or place[x+e][y+f] != "X":
return False
y += 1
else: y += 1
x += 1
return True
๐ Key Point
๐ธ x, y๋ฅผ ๋ด๊ฐ ์์๋ก ์ง์ ํ๊ฑด๋ฐ ํท๊ฐ๋ ค์ ๋ช๋ฒ ๋ต์ด ์ด์ํ๊ฒ ๋์๋ค ์ ์ฒดํฌํ๊ธฐ
๐ธ A or B != C ์ A != C or B != C ๋ ๋ค๋ฅด๋ค
๐ธ ์ฒ์์ ๊ฒฝ์ฐ์ ์ ํ๊ฐ์ง๋ฅผ ๊ณ ๋ ค ์ํด์ ํ๋ ธ์๋ค..ใ ๋ฌธ์ ์ฒ์ ํ ๋ ์๊ฐ๋๋ ๊ฑด ๊ผผ๊ผผํ๊ฒ ์ ์ ๋ฆฌ ํด๋๊ณ , ๋์ค์ ๊ตฌํํ ๋ถ๋ถ์ด๋ผ๋ฉด ์ฃผ์์ผ๋ก ๊ผญ ์ ์ด๋๊ฑฐ๋ pass๋ก ํํํด๋์.
'๐ถ Programming > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ. 12100 2048 (Easy) (Python) (3) | 2022.10.07 |
---|---|
BOJ. 1725 ํ์คํ ๊ทธ๋จ (Python) (0) | 2022.10.03 |
2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ Lv1. ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด (0) | 2022.07.17 |
2022 KAKAO BLIND RECRUITEMENT Lv2. ์๊ถ๋ํ (0) | 2022.07.17 |
2022 KAKAO BLIND RECRUITEMENT Lv2. ์ฃผ์ฐจ์๊ธ ๊ณ์ฐ (0) | 2022.07.07 |