본문 바로가기

컴퓨터/python

(21)
[python] 누적 곱 구하기 코테 문제를 풀면서 리스트의 모든 원소의 누적합이나 누적곱을 구해야 하는 경우가 많다. 그래서 누적곱을 쉽게 구하는 방법을 정리하였다. 1. reduce 사용 - 리스트 내의 요소를 순차적으로 누적 계산한 결과를 리턴해준다. from functools import reduce ## 방법 1 - 함수 사용 def func(x,y): return x*y reduce(func, [1,4,2,5]) ## 방법 2 - 람다 사용 reduce(lambda x,y : x*y , [1,4,2,5]) 2. prod 사용 - math 라이브러리의 prod를 사용하여 구한다. from math import prod print(prod([1,4,2])) # 8
[python] collections 모듈 - Counter 1. Counter Counter 클래스는 컨테이너 안의 데이터를 편리하고 빠르게 개수를 세도록 지원한다. 예를 들어, 중복된 원소가 있는 배열을 인자로 넘겨주면 각 원소의 그 개수를 사전 형식으로 반환한다. import collections a= [1,1,2,2,3,3,3,3] cnt = collections.Counter(a) print(cnt) # Counter({3: 4, 1: 2, 2: 2}) 2. Counter 클래스 함수 elements() : 값의 요소를 풀어서 순서를 고려하지 않고 반환한다. 원소를 확인하기 위해 리스트로 감싼다. 그렇지 않으면 을 반환한다. import collections a= [1,1,2,2,3,3,3,3] cnt = collections.Counter(a) prin..
[python] 문자열로 된 식을 계산하기 - eval, exec 1.eval() eval()은 파이썬의 내장 함수로 문자열로 이루어진 식을 실행한다. s = '1+2+3' print(eval(s)) # 6 2.exec() exec() '='가 들어간 문자열로 이루어진 '문'을 수행한다. exec()은 변수 선언과 할당이 가능하지만 eval과 달리 결과값을 반환하지 않는다. exec("s=1+2+3") print(s) # 6 print(exec("s=1+2+3")) # None
[python] 알파벳 리스트 만들기 코테 준비를 하며 여러 문제를 풀다보면 특히, 문자열 구현 문제를 풀다보면 알파벳 리스트를 사용해야 하는 경우가 꽤 많다. 하드코딩으로 리스트를 생성할 수도 있는데 너무 번거롭기 때문에 간단한 방법을 정리해 놓으려고 한다. 1. 아스키 코드 변환 이용 alpa=[chr(i) for i in range(ord('a'), ord('z')+1)] 2. string 모듈 이용 from string import ascii_lowercase# ascii_uppercase : 대문자 alpa=[i for i in ascii_lowercase]
[python] 중복 순열과 중복 조합 중복순열(Permutation with repetition) - 서로 다른 n개에서 r개를 선택할 때 순서를 고려하면서 중복하여 뽑는 경우의 수 (n의r승) - ex) A,B,C가 있다고 할 때 순서를 고려하면서 2개를 중복하여 뽑는 모든 경우의 수는 다음과 같다. AA AB AC BB BA BC CC CA CB 3**2=9 총 9가지 중복조합(Combination with repetition) - 서로 다른 n개에서 r개를 선택할 때 순서를 고려하지 않고 중복하여 뽑는 경우의 수 (n+r-1Cr) - ex) A,B,C가 있다고 할 때 순서를 고려하지 않고 2개를 중복하여 뽑는 모든 경우의 수는 다음과 같다. AA AB BB CC AC CA 4C2 = 4P2/2! = (4*3)/(2*1) = 6 총 6가..
[python] Permutations와 Combinations (순열과 조합) 순열(Permutations) - 서로 다른 n개에서 r개를 선택할 때 순서를 고려하여 중복없이 뽑는 경우의 수 (nPr = n! / (n-r)!) - ex) A,B,C가 있다고 할 때 순서를 고려하여 2개를 중복 없이 뽑는 모든 경우의 수는 다음과 같다. AB AC BA BC CA CB 3! / (3-2)! = 6 총 6가지 조합(Combinations) - 서로 다른 n개에서 r개를 선택할 때 순서를 고려하지 않고 중복없이 뽑는 경우의 수(nCr = n! / r! (n-r)!) - ex) A,B,C가 있다고 할 때 순서를 고려하지 않고 2개를 중복 없이 뽑는 모든 경우의 수는 다음과 같다. AB AC CA 3! / 2! (3-2)! = 3 총 3가지 python의 순열과 조합 python에서는 순열과..
[Python][Error] ValueError: invalid literal for int() with base 10: '\n' ValueError: invalid literal for int() with base 10: '\n' 형변환 에러이다. 10진수 int()로 변환할 수 없는 문자열이라는 뜻이다. 코딩테스트 문제를 연습할 때 코드 상의 문제가 없는데 위 에러가 계속 떠서 당황했던 기억이 있다. import sys를 했을 때 발생하는데 sys.stdin.readline()은 뒤에 개행문자가 같이 입력되기 때문이다. -> strip()을 사용하여 해결한다.
[python] Tree 순회하기 1. python으로 트리를 구현할 때 dictionary를 사용하여 루트노드와 left, right를 저장한다. 2. 전위/ 중위/ 후위 순회는 재귀함수로 코드의 순서를 바꿔 구현한다. 다음과 같은 이진트리가 존재할 때 각각 전위/중위/후위 순회를 해본다면 다음과 같다. 1. 전위순회 : [루트 - 왼쪽 자식 - 오른쪽 자식] 순으로 순회 A - B - D - G - C - E - F 2. 중위순회 : [왼쪽 자식 - 루트 - 오른쪽 자식] 순으로 순회 G - D - B - A - E - C - F 3. 후위순회 : [왼쪽 자식 - 오른쪽 자식 - 루트] 순으로 순회 G - D - B - E - F - C - A python으로 트리 순회 구현 1991번: 트리 순회 (acmicpc.net) 1991번..

728x90