2 분 소요

이 포스팅에서는 주로 코딩 테스트를 준비하면서 알아가면 좋은 팁과 코딩 문제 풀이를 할 때 빈번하게 쓰이는 파이썬 코드들에 대해 작성할 것이며, 계속 새롭게 알게 되는 것이 생길 때마다 추가할 예정이다.

특정 숫자까지 리스트 만들기

list_a = [x for x in range(1, 10)]
# [1,2,3,4,5,6,7,8,9]

소인수분해 리스트 만들기

N = 8
a = [x for x in range(1, N+1) if N % x == 0]

리스트 요소 개수 구하기

print(a.count(7))
# 리스트의 요수 중에서 '7'이 몇개인지 세준다.

리스트 요소 개수 구하기(딕셔너리)

import collections

a = {}
test1 = ["a", "b", "a", "c", "d", "e", "c", "c"]

a1 = collections. Counter(test1)
print(dict)
#Counter({'c': 3, 'a': 2, 'b': 1, 'd': 1, 'e':1})

또한 Counter로 얻은 딕셔너리끼리는 뺄셈도 가능하다.

test2 = ["a", "b", "a", "c", "d", "e", "c"]

a2 = collections.Counter(test2)

print(a1 - a2)
#Counter({'c': 1})

EOFError(입력의 개수가 정해지지 않은 경우)

while True:
    try:
        n = int(input())
    except EOFError:
        break
    {
        code block
    }   

입력 소수로 받기

a = float(int(input()))

특정 소수점 자리까지 나타내기

a = round(1.2345, 2)
print(a)
#1.23

max, min 함수

1. max()

max(iterable 객체) : 괄호안에 iterable 객체의 object를 하나씩 읽어 가장 큰 값을 반환해 준다.

>>> max(-10, 8, 0)
8

>>> max(-1, 0, 1, 2)
2


2. min()

max(iterable 객체) : 괄호안에 iterable 객체의 object를 하나씩 읽어 가장 큰 작은을 반환해 준다.

>>> min(-3, 6, -8, 0)
-8

>>> min(1, 3, 2, 6)
1


3. Parameter

min(), max() 함수는 둘 다 key, default parameter를 내장하고 있다.

key

key=func 으로 되어 있다. 즉, key값에는 특정 함수를 넣어주어서 단순 가장 큰 값을 리턴하는 것이 아니라 key에 의해 우선순위가 가장 큰 값을 넘겨 주는 것이다.


예시) 절대값 우선순위

>>> min(-10, -3, 0, 3, 8, key=abs)
-10

>>> _list = [-2, 1, 0]
>>> max(_list, key=abs)
-2


예시) 가장 많이 포함한 값 우선순위(count)

>>> _list = [0, 0, 0, 1, 1]
>>> max(_list, key=_list.count)
0

위 예시와 같이 count()라는 함수를 넘겨주기 때문에 괄호는 생략하고 작성한다. count함수는 리스트의 원소 갯수를 세는 함수로 이 원소 갯수가 가장 많은 0을 반환한 모습을 볼 수 있다.


예시) 람다 함수(lambda)

>>> _list = [3, 5, 6, 9]
>>> max(_list, key= lambda x : x%3)
5

3으로 나누어 떨어진 나머지 값을 기준으로 최대값을 정하기 때문에 3의 배수는 모두 나가 떨어지고 나머지가 2가 되는 5가 반환되었다.


default

iterable 객체가 비어있는 경우 대신 반환할 값을 지정해 줄 수 있다.

만약 이 default값을 지정하지 않고 빈 iterable의 max나 min 값을 반환하려하면 오류가 발생한다.

>>> _list= []
>>> max(_list, default=1)
1
>>> max(_list)
ValueError: max() arg is an empty sequence


dictionary

딕셔너리도 위와 같은 과정이 가능하다. 단, 딕셔너리의 최대값을 가지는 키 값을 알아내기 위해서는 두 가지 방법이 가능하다.

중복이 없는 경우

max(dic, key=dic.get)


중복이 있는 경우

[k for k,v in dic.items() if max(dic.values()) == v]

카테고리: ,

업데이트:

댓글남기기