ํ๋ก๊ทธ๋๋จธ์ค 'ํ์ด์ฌ์ ํ์ด์ฌ๋ต๊ฒ' ๊ฐ์ ์ ๋ฆฌ
https://programmers.co.kr/learn/courses/4008
1. ๋ชซ๊ณผ ๋๋จธ์ง : divmod() ํจ์ ์ฌ์ฉ
# ๋ค๋ฅธ ์ธ์ด
a = 7
b = 5
print(a//b, a%b)
# ํ์ด์ฌ
a = 7
b = 5
print(*divmod(a,b))
2. n์ง๋ฒ์ผ๋ก ํ๊ธฐ๋ string ์ 10์ง๋ฒ ์ซ์๋ก ๋ณํํ๊ธฐ
# ํ์ด์ฌ
# base(5)์ง๋ฒ์ผ๋ก ํ๊ธฐ๋ num(3212)๋ฅผ 10์ง๋ฒ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
# num ์ด string ์ด ์๋ ๊ฒฝ์ฐ, num = str(num) ์ถ๊ฐ ํ์
num = '3212'
base = 5
print = int(num,base)
3. ๋ฌธ์์ด ์ ๋ ฌํ๊ธฐ : ljust, center, rjust
# ํ์ด์ฌ
n = 7 #7์นธ
s = '๊ฐ๋๋ค๋ผ'
s.ljust(n) # ์ข์ธก ์ ๋ ฌ
s.center(n) # ๊ฐ์ด๋ฐ ์ ๋ ฌ
s.rjust(n) # ์ฐ์ธก ์ ๋ ฌ
4. ์ํ๋ฒณ ์ถ๋ ฅํ๊ธฐ
# ํ์ด์ฌ
import string
string.ascii_lowercase # ์๋ฌธ์ abcdefgh...
string.ascii_uppercase # ๋๋ฌธ์ ABCDEFGH...
string.ascii_letters # ๋์๋ฌธ์ ๋ชจ๋ abcdef...xyzABCD...
string.digits # ์ซ์ 0123...9
# str type์ผ๋ก ํน์ ์ํ๋ฒณ, ์ซ์๋ฅผ ๋ฝ์ผ๋ ค๋ฉด ์ธ๋ฑ์ฑํ๋ฉด๋จ
5. ์๋ณธ ์ ์งํ์ฑ, ์ ๋ ฌ๋ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ : sorted()
# ํ์ด์ฌ
list1 = [3,2,1]
list2 = sorted(list1)
6. 2์ฐจ์ ๋ฆฌ์คํธ ๋ค์ง๊ธฐ : zip, unpacking ์ ์ฌ์ฉ
* ์ ์น ํ๋ ฌ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, numpy ์ฌ์ฉ ๋ชปํ ๋ 2์ค for๋ฌธ ๋ณด๋ค ๊ฐ๋จํ๋ค
# ํ์ด์ฌ
mylist = [[1,2,3],[4,5,6],[7,8,9]]
new_list = list(map(list, zip(*mylist)))
* zip(*iterables)์ ๊ฐ iterables ์ ์์๋ค์ ๋ชจ์ผ๋ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ง๋ ๋ค. ํํ์ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋๋ ค์ฃผ๋๋ฐ, i ๋ฒ์งธ ํํ์ ๊ฐ์ธ์๋ก ์ ๋ฌ๋ ์ํ์ค๋ ์ดํฐ๋ฌ๋ธ์ i ๋ฒ์งธ ์์๋ฅผ ํฌํจํ๋ค.
# zip ์ฌ์ฉ๋ฒ
mylist = [1, 2, 3]
new_list = [40, 50, 60]
for i in zip(mylist, new_list):
print (i)
(1, 40)
(2, 50)
(3, 60)
7. i ๋ฒ์งธ ์์์ i+1 ๋ฒ์งธ ์์์ ์ฐจ๋ฅผ ๋ด์ ์ผ์ฐจ์ ๋ฆฌ์คํธ์ ์ฐจ๋ก๋ก ๋ด์ ๋ฆฌํดํ๋ ๋ฐฉ๋ฒ
(๋จ, ๋ง์ง๋ง+1 ๋ฒ์งธ์์ ์ฐจ๋ฅผ ๊ตฌํ ์ ์์ผ๋, ์ด ๊ฐ์ ๊ตฌํ์ง ์๋๋ค)
# ๋ค๋ฅธ ์ธ์ด์์๋ len๊ณผ index๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ์์์ ์ ๊ทผ
# ํ์ด์ฌ์์๋ zip์ ์ด์ฉํ๋ฉด index๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์์ ์ ๊ทผํ ์ ์์
# number1์๋ mylist[0]๋ถํฐ, number2์๋ mylist[1]๋ถํฐ iterate ํ๋ค
# ๋ํ, zip ํจ์์ ์๋ก ๊ธธ์ด๊ฐ ๋ค๋ฅธ ๋ฆฌ์คํธ๊ฐ ์ธ์๋ก ๋ค์ด์ค๋ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ ์งง์ ์ชฝ๊น์ง๋ง ์ดํฐ๋ ์ด์
์ด ์ด๋ฃจ์ด ์ง๋ค.
# ๋๋ฌธ์ mylist[1:] ์ด mylist ๋ณด๋ค ๊ธธ์ด๊ฐ ์งง์์ n ๊ธธ์ด์ ๋ฆฌ์คํธ์์ n,n+1 ๋ฒ์งธ ์ฐจ์ด๋ฅผ ๊ตฌํ์ง ์๊ฒ ๋๋ค.
def solution(mylist):
answer = []
for number1, number2 in zip(mylist, mylist[1:]):
answer.append(abs(number1 - number2))
return answer
if __name__ == '__main__':
mylist = [83, 48, 13, 4, 71, 11]
print(solution(mylist))
8. ๋ชจ๋ ๋ฉค๋ฒ์ type ๋ณํํ๊ธฐ : map
# ํ์ด์ฌ
# map(๋ณํํ type, ๋ณํํ ๋์)
list1 = ['1','100','33']
list2 = list(map(int, list1))
9. Sequence ๋ฉค๋ฒ๋ฅผ ํ๋๋ก ์ด์ด ๋ถ์ด๊ธฐ : join
* Ex) ['1','100','33'] ๋ฅผ ์ด์ด ๋ถ์ฌ ๋ฌธ์์ด '110033' ๋ง๋ค๊ธฐ
# ๋ค๋ฅธ ์ธ์ด์์๋ for๋ฌธ์ผ๋ก ์์๋ฅผ ํ๋์ฉ ์ด์ด ๋ถ์
# ํ์ด์ฌ
mylist = ['1','100','33']
answer = ''.join(mylist)
10. ๊ณฑ์งํฉ(Cartesain product) ๊ตฌํ๊ธฐ
* Ex) 'ABC', 'xy' ์ ๊ณฑ์งํฉ์ Ax Ay Bx By Cx Cy
# ๋ค๋ฅธ ์ธ์ด์์๋ for๋ฌธ์ ์ด์ฉํ์ฌ ๋ iterable์ ์์๋ฅผ ํ๋์ฉ ๊ณฑํจ
# ํ์ด์ฌ์์๋ itertools.product ๋ฅผ ์ด์ฉํ์ฌ for๋ฌธ ์์ด ๊ณฑ์งํฉ์ ๊ตฌํ ์ ์์
import itertools
iter1 = 'ABCD'
iter2 = 'xy'
iter3 = '1234'
print(list(itertools.product(iter1,iter2,iter3)))
# itertools.product ์ฌ์ฉํ๋ฉด ํํ๋ก ์ ์ฅ๋จ
11. 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ 1์ฐจ์ ๋ฆฌ์คํธ๋ก ๋ง๋ค๊ธฐ
# ํ์ด์ฌ
mylist = [[1,2],[3,4],[5,6]]
# ๋ฐฉ๋ฒ1 : sum ํจ์
answer = sum(mylist,[])
# ๋ฐฉ๋ฒ2 : list comprehension
answer = [element for array in mylist for element in array]
12. ์์ด๊ณผ ์กฐํฉ : itertools.permutations() ์ฌ์ฉ
#ํ์ด์ฌ
import itertools
pool = ['A', 'B', 'C']
print(list(map(''.join, itertools.permutations(pool)))) # 3๊ฐ์ ์์๋ก ์์ด ๋ง๋ค๊ธฐ
print(list(map(''.join, itertools.permutations(pool, 2)))) # 2๊ฐ์ ์์๋ก ์์ด ๋ง๋ค๊ธฐ
13. for๋ฌธ๊ณผ if๋ฌธ์ ํ๋ฒ์ : List comprehension ์ if๋ฌธ
# ํ์ด์ฌ
# ์ฃผ์ด์ง list์์ ์ง์์ธ ์๋ง ์ ๊ณฑํ์ฌ ๋ฆฌ์คํธ์ ์ถ๊ฐ
mylist = [3,2,6,7]
answer = [number**2 for number in mylist if number%2==0]
14. for-else๋ฌธ
* Ex) ์์ฐ์ 5๊ฐ๊ฐ ์ฃผ์ด์ง ๋, ์ซ์๋ฅผ ์ฐจ๋ก๋ก ๊ณฑํด ๋์จ ์๊ฐ ์ ๊ณฑ์๊ฐ ๋๋ฉด 'found'๋ฅผ ์ถ๋ ฅํ๊ณ , ๋ชจ๋ ์๋ฅผ ๊ณฑํด๋ ์ ๊ณฑ์๊ฐ ๋์ค์ง ์์ผ๋ฉด 'not found' ๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋ ์์ฑ ์
# ํ์ด์ฌ
# ์ซ์ x ๊ฐ ์ ๊ณฑ์ ์ธ์ง ํ์ธํ๋ ค๋ฉด sqrt(x) == int(sqrt(x)) ์ธ์ง ํ์ธ
# for-else ๋ฌธ์ for๋ฌธ์ด ์ค๊ฐ์ break ๋์ง ์์ผ๋ฉด ์คํ
# ๋๋ฌธ์ found ํ๋ฉด break ๋์ด else๋ฌธ์ ์คํํ์ง ์๊ณ found ํ์ง ๋ชปํ๋ฉด not found ์คํ
import math
if __name__ == '__main__':
nums = [int(input()) for _ in range(5)]
multiplied = 1
for num in nums :
multiplied*=num
if math.sqrt(multiplied) == int(math.sqrt(multiplied)):
print('found')
break
else:
print('not found')
15. ๋ ๋ณ์์ ๊ฐ ๋ฐ๊พธ๊ธฐ
a = 3
b = 'abc'
a,b = b,a
16. ์ด์ง ํ์ : bisect.bisect() ์ฌ์ฉ
# ํ์ด์ฌ
import bisect
mylist = [1,2,3,7,9,11,33]
print(bisect.bisect(mylist,3)) # ํด๋น ๊ฐ์ ๋ท ์ธ๋ฑ์ค ๋ฐํ
print(bisect.bisect_left(mylist,3)) # ํด๋น ๊ฐ์ ์ธ๋ฑ์ค ๋ฐํ
print(bisect.bisect_right(mylist,3)) # ํด๋น ๊ฐ์ ๋ท ์ธ๋ฑ์ค ๋ฐํ
'๐ป Programming > ์ฝ๋ฉ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ํ '์๊ณ ๋ฆฌ์ฆ' (0) | 2025.01.16 |
---|---|
์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ํ '์๋ฃ ๊ตฌ์กฐ' (0) | 2025.01.15 |