[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋๋์ด ๋จ์ด์ง๋ ์ซ์ ๋ฐฐ์ด
๐ ๋ฌธ์ ์ ๋ณด
- ๋์ด๋ : Level 1
- ๋ฌธ์ ๋งํฌ : https://school.programmers.co.kr/learn/courses/30/lessons/12910
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช
๋ฌธ์ ์ค๋ช
array์ ๊ฐ element ์ค divisor๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฐ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ฐฐ์ด์ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
divisor๋ก ๋๋์ด ๋จ์ด์ง๋ element๊ฐ ํ๋๋ ์๋ค๋ฉด ๋ฐฐ์ด์ -1์ ๋ด์ ๋ฐํํ์ธ์.
์ ํ ์ฌํญ
- arr์ ์์ฐ์๋ฅผ ๋ด์ ๋ฐฐ์ด์ ๋๋ค.
- ์ ์ i, j์ ๋ํด i ≠ j ์ด๋ฉด arr[i] ≠ arr[j] ์ ๋๋ค.
- divisor๋ ์์ฐ์์ ๋๋ค.
- array๋ ๊ธธ์ด 1 ์ด์์ธ ๋ฐฐ์ด์ ๋๋ค.
์ ์ถ๋ ฅ ์
arr | divisor | return |
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์#1
arr์ ์์ ์ค 5๋ก ๋๋์ด ๋จ์ด์ง๋ ์์๋ 5์ 10์
๋๋ค. ๋ฐ๋ผ์ [5, 10]์ ๋ฆฌํดํฉ๋๋ค.
์
์ถ๋ ฅ ์#2
arr์ ๋ชจ๋ ์์๋ 1์ผ๋ก ๋๋์ด ๋จ์ด์ง๋๋ค. ์์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด [1, 2, 3, 36]์ ๋ฆฌํดํฉ๋๋ค.
์
์ถ๋ ฅ ์#3
3, 2, 6์ 10์ผ๋ก ๋๋์ด ๋จ์ด์ง์ง ์์ต๋๋ค. ๋๋์ด ๋จ์ด์ง๋ ์์๊ฐ ์์ผ๋ฏ๋ก [-1]์ ๋ฆฌํดํฉ๋๋ค.
๐ ๋ฌธ์ ํ์ด
๋ฐฉ๋ฒ 1. ๋๋ค ํํ์ ํ์ฉ
lambda ํํ์์ filter๋ฅผ ์ฌ์ฉํ ํ์ด์ด๋ค.
def solution(arr, divisor):
answer = sorted(list(filter(lambda x : x % divisor == 0, arr)))
if len(answer) == 0 : return [-1]
else: return answer
๋ฐฉ๋ฒ 1-1. ์ ํ์ด ์์ฉ
Python์์ or ์์ด ์ฐธ์ผ ๊ฒฝ์ฐ๋ ํด๋น ๊ฐ๊น์ง๋ง, ์์ด ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ ๋ค์ ๊ฒ์ด ํธ์ถ๋๋ ํน์ง์ ์ด์ฉํ ๋์ฑ ๊ฐ๋จํ ํ์ด์ด๋ค.
def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]
๐ก What I learned
- or ์ฐ์ฐ์์ ๋ ๋ค๋ฅธ ํ์ฉ๋ฒ → if ~ else ~ ๋ฌธ์ ์ฐ์ง ์๊ณ ๋์ฑ ๊ฐ๋จํ ํํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ก ์์๋ค.