๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Programming/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ…Œ์ŠคํŠธ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 'ํŒŒ์ด์ฌ์„ ํŒŒ์ด์ฌ๋‹ต๊ฒŒ' ๊ฐ•์˜ ์ •๋ฆฌ

by ๋ญ…์ฆค 2021. 8. 3.
๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 'ํŒŒ์ด์ฌ์„ ํŒŒ์ด์ฌ๋‹ต๊ฒŒ' ๊ฐ•์˜ ์ •๋ฆฌ

https://programmers.co.kr/learn/courses/4008

 

ํŒŒ์ด์ฌ์„ ํŒŒ์ด์ฌ๋‹ต๊ฒŒ

๋ณธ ๊ฐ•์˜๋Š” ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ##### ์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค * ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•์„ ์•Œ๊ณ  ๊ณ„์‹œ๋Š” ๋ถ„ * ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ํ’€๊ณ  ์‹ถ์€ ๋ถ„ * Python ์ฝ”

programmers.co.kr

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))  # ํ•ด๋‹น ๊ฐ’์˜ ๋’ท ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜

 

๋ฐ˜์‘ํ˜•