๋ฐ์ํ
๋ฌธ์ ๋งํฌ
๋์ ํ์ด
- ์ฐ์ ์ฌ๋ถ์ ๊ฐ๊ณ ์๋ ํ์์ด ๋ง์ฝ ๋๋์ ๋นํ์ ๋๋ ์๋ฌดํํ
๋ ๋น๋ ค์ค์๊ฐ ์๊ธฐ์ lost์ reserve์ ๊ฐ์ ์ซ์๊ฐ ์์ผ๋ฉด ์ ๊ฑฐ ํด์ฃผ๋ ๊ณผ์ ๋ถํฐ ๊ฑฐ์ณค๋ค.
์งํฉ์ ์ฐจ์งํฉ์ ์ด์ฉํด์ ์ํ๋ ์์๋ฅผ ๋บ ์ ์๊ธฐ์ ๊ฐ๋จํ๊ฒ set (์งํฉ)์ ์ด์ฉํ๋ค. - for ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ์์ด๋ฒ๋ฆฐ ํ์ (lost)์ ํ๋ช ์ฉ ๋ฝ์ ๋ณด์๊ณ , ํด๋น ํ์์ด reserve์์ ๋น๋ฆด ์์๋์ง ํ๋จํ๋ค. ๋ง์ฝ reserve์์ lost์๊ฒ ๋น๋ ค์ค ์ ์๋ค๋ฉด, lost ๋ฆฌ์คํธ์์ ์ญ์ ํด๋ฒ๋ฆฌ๋ ๊ณผ์ ์ ๊ฑฐ์ณค๋ค.
- ๋ง์ฝ reserve์์ ๋น๋ ค์ค ์์๋ค๋ฉด, ๊ทธ ํ์์ ์์ ์ ๋ชป๋ฃ๋ ๊ฒ์ด๊ธฐ์ '์ ์ฒดํ์์'์์ -1 ํด์คฌ๋ค. (์ด์ฐจํผ ์์ ๋ฃ๋ ํ์์ ์ฒ์์ n์ผ๋ก ์์ํ๋ค.)
def solution(n, lost, reserve):
n_lost = set(lost) - set(reserve)
n_reserve = set(reserve) - set(lost)
for i in n_lost:
if i-1 in n_reserve:
n_reserve.remove(i-1)
elif i+1 in n_reserve:
n_reserve.remove(i+1)
else: # ๋๋๋นํ i์๊ฒ ์ฌ๋ถ์ ์ท์ ๋น๋ ค์ค reserve๊ฐ ์๋ค๋ฉด ์ ์ฒด ํ์์ -1
n -= 1
return n
๋๋ถ๋ถ lost ์ reserve์ ์ฐจ๋ฅผ ์ด์ฉํด์ ํ์๊ณ , ๋ฆฌ์คํธ์์ ์ญ์ ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒ๊ฐ๋ค. ๋ง์ ์ฌ๋๋ค์ด ๋น์ทํ ๋งฅ๋ฝ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์๋ค. ๋๋ "set"์ผ๋ก ์ด์ฉํด์ ์ฐจ์งํฉ์ ์ด์ฉํ๋ค๋ ๊ฒ์ ์๊ฐ์ ๋ชปํ๊ธฐ์, ๊ตฌ๊ธ๋ง์ผ๋ก ์ด๋ถ๋ถ๋ง ์ฐพ์์ ๋ฌธ์ ๋ฅผ ํ์๋ค.
์ฒ์์๋ for loop๋ฅผ ๋๋ ค์ reserve๋ lost ์์์ ํด๋น ์ซ์์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์
ํ ํ, ์๋ก์ด n_lost, n_reserve๋ก appendํด์ฃผ๋ ๊ณผ์ ์ ์ฌ์ฉํ๋๋ฐ, ๋ฐ๋ณต๋ฌธ์ด ๋๊ฐ๋ ์๊ฒจ์ ์๊ฐ๋ณต์ก๋ ํจ์จ์ด ๋งค์ฐ ๋ฎ์์ ๊ฒ์ด๋ค. ์ฐจ์งํฉ์ ์ด์ฉํจ์ผ๋ก์จ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌ ํ ์ ์๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
๋ฐ์ํ
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ตฌํ - ๋ฌธ์์ด ์์ถ (0) | 2021.09.01 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (level 1) (0) | 2021.08.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํฐ์ผ๋ชฌ (level 1) (0) | 2021.08.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ํด๋ฆฌ์ฑ๋ฆฐ์ง(1์ฃผ์ฐจ) - ๋ถ์กฑํ ๊ธ์ก ๊ณ์ฐํ๊ธฐ (0) | 2021.08.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ํ์ - ๋ชจ์๊ณ ์ฌ (feat. cycle ํจ์) (0) | 2021.08.04 |