파이썬 문제로 배우기(파이썬을 파이썬답게)

코딩 테스트 문제를 풀면서 파이썬을 파이썬 답게 사용할 수 있는 곳이 있습니다. 가격은 무료고, 기본적인 파이썬 지식만 있으면 금방 볼 수 있습니다. 저도 한번 하면서 이해가 안되거나 새로운 내용들을 정리해보았습니다. 간단하게 파이썬 관련된 문제를 풀어보고 싶으시면 따라해보시면 좋을 것 같습니다.

 

 

- 파이썬을 파이썬답게 : https://programmers.co.kr/learn/courses/4008

 

몪과 나머지 한번에 구하기

파이썬의 divmod 함수를 사용하면 한번에 출력 가능

a = 7
b = 5
print(*divmod(a, b)

 

문자열 정렬하기(ljust, center, rjust)

문자열을 좌측/가운데/우측 정렬하는 파이썬 함수를 사용할 수 있습니다.

'가나다라               ' # 좌측정렬
'               가나다라' # 우측 정렬
'       가나다라        ' # 가운데 정렬
s, n = input().strip().split(' ')
n = int(n)
len = len(s)

if len < n and  (n-len) %2 == 0 :
    print(s.ljust(n, " "))
    print(s.center(n, " "))
    print(s.rjust(n, " "))

 

알파벳 출력하기

함수를 이용해서 알파멧 a부터 z까지 가져오려고 할때 사용합니다.

import string

num = int(input().strip())
if num == 0 :
    print(string.ascii_lowercase) # 소문자
elif num == 1 :
    print(string.ascii_uppercase) # 대문자

 

원본을 유지한체 정렬된 리스트 구하기(sorted)

파이썬 sorted() 함수를 사용하면 리스트 원소를 쉽게 정렬할 수 있습니다.

list1 = [3, 2, 1]
list2 = sorted(list1)

 

2차원 리스트 뒤집기(zip)

zip 함수는 각 iterables의 요소들을 모으는 이터레이터를 만들어 줍니다.  아래코드 처럼 파이썬의 zip과 unpacking을 이용하면 코드 한줄로 리스트를 뒤집을 수 있습니다.

mylist = [ [1,2,3], [4,5,6], [7,8,9] ]
new_list = list(map(list, zip(*mylist)))

# output: # [[1, 4, 7], # [2, 5, 8], # [3, 6, 9]]

 

모든 멤버의 type 변환하기(map)

갹 iterable의 모든 멤버의 type을 변환하는 방법은 아래 코드처럼 map 함수를 사용하면 되니다.

저도 처음에 조금 이해하기 힘들었는데 자세한 내용은 여기(파이썬 코딩도장) 설명을 참고하면 금방 이해가 됩니다.

 

list1 = ['1', '100', '33']
list2 = list(map(int, list1))

# output: # [1, 100, 33]

 

곱집합(Cartesian product) 구하기(product)

파이썬은 product 함수를 사용하여 곱집합을 구할 수 있습니다.

예시) 두 스트링 'ABCD', 'xy' 의 곱집합은 Ax Ay Bx By Cx Cy Dx Dy 입니다.

import itertools

iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
itertools.product(iterable1, iterable2, iterable3)

 

 

2차원 리스트를 1차원 리스트로 만들기

2차원 리스트를 1차원으로 간단하게 만드는 방법이 있습니다. for문을 사용하지 않아도 쉽게 만들 수 있습니다.

 

my_list = [[1, 2], [3, 4], [5, 6]]

# 방법 1 - sum 함수
answer = sum(my_list, [])

#output : [1, 2, 3, 4, 5, 6]

 

 

for문과 if문을한번에 - List comprehension의 if문

파이썬의 list comprehension을 사용하여 한 줄 안에 for문과 if문을 한 번에 처리할 수 있습니다.

 

mylist = [3, 2, 6, 7]
answer = [ i**2 for i in mylist if i %2 == 0]

 

 

이진탐색하기(bisec)

파이썬은 이진탐색 코드를 일일이 코딩하지 않고 함수를 이용하여 쉽게 사용할 수 있습니다.

 

import bisect
mylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect.bisect(mylist, 3))

 

 

파일 입출력 간단하게 하기

파이썬은 with -as 구문을 이용하여 간결하게 파일 입출력을 할 수 있습니다. 아래와 같이 코드를 사용하면 됩니다.

 

with open('myfile.txt') as file:
  for line in file.readlines():
    print(line.strip().split('\t'))
반응형

이 글을 공유하기

댓글

Designed by JB FACTORY