์ด๋ฒ ๊ธ์ ๋ฌธ์ ํ์ด์ ๋ด์ฉ์ ์๋๊ณ , ํ์๊ฐ ํท๊ฐ๋ฆฌ๊ณ ํ์์ ์ ํ์ฉํ์ง ๋ชปํ๋ ๊ฐ๋ ์ ๋ด์ฉ์ ๋ด์๋ค. ๊ทธ๋ฅ ํ์ํ ๋๋ง๋ค ๊ฐ์ธ์ ์ผ๋ก ๋ค์ฌ๋ค๋ณด๊ณ ์ ๊ฐ๋ ์ ์ ๋ฆฌํ ๊ฒ! (๋ง ๊ทธ๋๋ก ๋ด๊ฐ ๋ณด๋ ค๊ณ ๋ง๋ ๊ฐ๋ ์ ๋ฆฌ ๋ ธํธ..) ์์ผ๋ก๋ ์ฝ๋ฉํ ์คํธ๋ ๋จธ์ ๋ฌ๋ ๊ฐ๋ ์ธ์๋ python์ ๋ฌธ๋ฒ, ํ์ฉ ๊ธฐ๋ฒ๋ค์ ์์ฃผ ์ ๋ฆฌํ๋ ค ํ๋ค.
๐ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ (list comprehension)
for ๋ฌธ๊ณผ if ๋ฌธ์ ๋ฆฌ์คํธ ๋ด๋ถ์ ์์ฑํด ์ฝ๋๋ฅผ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ๋ง๋ค๊ณ ์คํ์๋๋ฅผ ๋์ด์ฌ๋ ค์ฃผ๋ ๊ณ ๋ง์ด ๋ ์์ด๋ค. ์ฌ๊ธฐ์ ๋ฐ์ ์ฝ๋๋ค์ ์ ์ธํ๊ณ counts = [list1.count(i) for i in list1] ๋ผ์ธ์ ํ ๋ฒ ๋ค์ฌ๋ค๋ณด์.
โณ๏ธ ์์
counts = [ list1 ๋ฆฌ์คํธ ๋ด๋ถ์ i๋ฅผ ๋๋ ค๋ณด์์ ๋, i ์ ๊ฐ์๋ค๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ๋ฆฌ์คํธ]
1) for i in list1
-> list1์ ์์๋ค์ ํ๋์ฉ i๋ก ๋๋ฉด์ ๋ณด๊ธฐ.
2) list.count(i)
-> i์ ๊ฐ์๋ฅผ list1์์ ๋๋ฉด์ countํ๊ธฐ.
'''์์) <ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ
์คํธ ๊ธฐ์ด ๋ฌธ์ , 181916๋ฒ, ์ฃผ์ฌ์ ๊ฒ์3> '''
def solution(a, b, c, d):
list1 = [a, b, c, d]
counts = [list1.count(i) for i in list1] # list comprehension ๊ธฐ๋ฒ.
""" if max(counts) == 4:
return a * 1111
elif max(counts) == 3:
p = list1[counts.index(3)]
q = list1[counts.index(1)]
return (10 * p + q) ** 2
elif max(counts) == 2:
if min(counts) == 2:
return ((a + b) * abs(a - b)) if a == c else ((a + c) * abs(a - c))
else:
p = list1[counts.index(2)]
return (a * b * c * d) / p ** 2
else:
return min(list1)
"""
โณ๏ธ ๋ฆฌ์คํธ ๋ด๋ถ์ ์กฐ๊ฑด ์ถ๊ฐํ๊ธฐ
๋ฆฌ์คํธ ๋ด๋ถ์ if ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด ํน์ ๊ฐ์ ๊ฑธ๋ฌ๋ด๋ filtering ์์ ์ด ๊ฐ๋ฅํ๋ค. ์ฌ๊ธฐ์ ์กฐ์ฌํ ๊ฑด and์ or ์ฐ์ฐ์์ ์ฌ์ฉ, if ์กฐ๊ฑด๋ฌธ์ ์์น ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด๋ค. ์๋๋ ๊ทธ ์์๋ก, ๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ์ ํ๊ฒ ํ์ฉํ๋ฉด ๋ ๋ฏํ๋ค. ์์ฃผ ํ์ฉ๋๋ ๋ฐฉ์์ด๋ ์์ ์ต์ ๋๊น์ง ์ฌ๋ฌ ๋ฌธ์ ๋ค์ ํ์ด๋ณด๋ฉด์ ์ต์ํด์ ธ์ผ๊ฒ ๋ค.
ex) ๋ฆฌ์คํธ๋ช = [ํํ์ for ๋ณ์ in ๋ฐ๋ณต ๊ฐ๋ฅํ ๋์ if ์กฐ๊ฑด๋ฌธ]
[ ( ๋ณ์๋ฅผ ํ์ฉํ ๊ฐ ) for ( ์ฌ์ฉํ ๋ณ์ ์ด๋ฆ ) in ( ์ํํ ์ ์๋ ๊ฐ ) if ( ์กฐ๊ฑด๋ฌธ ) ]
#๏ธโฃ๋ด๋ถ ์กฐ๊ฑด๋ฌธ์ด ํ๋์ผ ๋.
# 1. if ๋ฌธ์ด ํ ๊ฐ!
arr = [n for n in range(1, 11) if n % 2 == 0]
print(arr)
# [2, 4, 6, 8, 10]
#๏ธโฃ๋ด๋ถ ์กฐ๊ฑด๋ฌธ์ด ๋ ๊ฐ์ผ ๋.
# 2. if ๋ฌธ์ด ๋ ๊ฐ!
arr2 = [n for n in range(1, 31) if n % 2 == 0 if n % 3 == 0]
arr3 = [n for n in range(1, 31) if n % 2 ==0 and n % 3 == 0]
# ๊ฐ์ ์กฐ๊ฑด์ ์ฝ๋.
# ๋จ, ๋ ๊ฐ์ if ๋ฌธ ์ฌ์ด์ and ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๊ฑด ๋ถ๊ฐ๋ฅ!
#๏ธโฃํํ์ + ์กฐ๊ฑด๋ฌธ + for ๋ฌธ์ ํํ์ผ ๋.
# 3. ์กฐ๊ฑด๋ฌธ์ด ๋จผ์ ๋์ฌ ๋.
counts = [n if (n < 15 and n > 9) else 0 for n in range(1, 30)] # else ๋ฌธ์ ๋ฐ๋์ ์จ์ฃผ์ด์ผ ํจ.
print(counts)
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# n < 15๋ณด๋ค n > 9์ธ ๊ฒฝ์ฐ n ๊ทธ๋๋ก, else : 0์ผ๋ก
#๏ธโฃ์ค์ฒฉ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
list1 = [[i for i in range(2)] for j in range(3)]
print(list1)
# [[0, 1], [0, 1], [0, 1]]
์ด์ฐจ์ ๋ฆฌ์คํธ์ ์์ฑ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.
j = 0, 1, 2 / i = 0, 1
1) j = 0, [i for i in range(2) -> 0, 1]
- [[0, 1]]
2) j = 1, [i for i in range(2) -> 0, 1]
- [[0, 1], [0, 1]]
3) j = 2, [i for i in range(2) -> 0, 1]
- [[0, 1], [0, 1], [0, 1]]
๋น๊ต์ ๊ฐ๋จํ ์์๋ฅผ ๋ค๊ณ ์ ๊ฐ๋ ์ ์ ๋ฆฌํด๋ดค๋๋ฐ, ๋ณต์กํ ์ปดํ๋ฆฌํจ์ ์ด ์๊ตฌ๋๋ ๋ฌธ์ ์ผ ๊ฒฝ์ฐ ๋ง์ด ๊น๋ค๋กญ๋ค;; ๊ทธ๋ฆฌ๊ณ ์ปดํ๋ฆฌํจ์ ์ ๋น๋จ list์์๋ง ์ ์ฉ๋์ง ์๋๋ค. ๋์ ๋๋ฆฌ์ set์์๋ ์ ์ฉ์ด ๊ฐ๋ฅํ๋ฐ, ๊ทธ ๋ด์ฉ์ ์ถ๊ฐ๋ก ๋ค๋ค๋ณด๋ ค ํ๋ค. ์ผ๋จ ํด๋น ๊ฐ๋ ์ ์๊พธ ์ ์ฉํด๋ณด๋ฉด์ ์ต์ํด์ง ํ์๊ฐ ์์ผ๋๊น.. ใ ใ
'Python > ๐ญ Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๊ณผ ํ [์๋ฃ๊ตฌ์กฐ] (4) | 2024.03.16 |
---|