본문 바로가기

study/python

(12)
numpy 함수 정리 numpy Numeric Python import numpy as np : 입력받은 파이선 리스트를 넘파이 배열로 바꾸기 Numpy는 ndarray 라는 넘파이 전용 리스트를 사용하는데 쉽게 행렬이라 생각하시면 됩니다. 생성함수(Array Creation) • np.array() : 입력받은 파이선 리스트를 넘파이 배열로 바꾸기 • np.arange(N) : 0에서부터 N-1까지 1씩 증가하는 배열 만들기 >>> np.arange(5) array([0, 1, 2, 3, 4]) >>> np.arange(10, 30, 5) array([10, 15, 20, 25]) >>> np.arange(0, 2, 0.3) # it accepts float arguments array([0. , 0.3, 0.6, 0.9,..
파이썬 리스트 공백과 함께 출력하기 1. end or sep 구분자 이용하기https://bamdal.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACpython-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C-%EA%B5%AC%EB%B6%84%ED%95%98%EC%97%AC-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0for문을 사용해서 주로  2. join 메서드 활용하기숫자의 경우 문자열로 타입 변경해주어야 함!strList = ["A","B","C","D","E"]numList = [1,2,3,4,5]print(strList)print(numList)print(' '.join(strList))print(' '.jo..
[재귀함수] 재귀함수? 메소드 혹은 함수의 내부에서 자기 자신의 메소드 혹은 함수를 다시 호출하는 함수 코드의 간결화 및 변수의 최소화를 위해 사용 조건문을 활용하여 종료조건을 삽입해야 함 def recur(index, value): if index == len(data): result.add(value) else: recur(index +1, value+data[index]) recur(index+1, value) data = [3, 5, 8] result = set() recur(0,0) print(result) * 재귀함수 활용 1) 팩토리얼 n! = n * (n-1) * ... 2 * 1 def factorial(n): if n ==1: reutrn 1 else: return n * factorial(n-1)..
input 입력 여러 개 받기 1) map 함수를 사용하여 공백을 기준으로 split>> a, b = input().split() # 문자열로>> a, b = map(int, input().split()) # 정수형으로>> num_list = list(map(int, input().split())) # 리스트로 2) 문자열 여러줄 입력받기>> s_list = [input() for _ in range(n)] # n줄 입력 받기  3) 한 문자열 받아서 한 글자씩 나누어 더하기 ex)s = input()for i in range(len(s)):sum += int(s[i]) # 문자열은 슬라이싱 가능  4) 띄어쓰기 없이 정수 여러 개 입력받아 2차원 배열로 저장하기two_d = [list(map(int, input())) for _ i..
스택, 큐, 덱 1) 스택(Stack) - 데이터를 접시쌓듯이 차곡차곡 쌓는다 - 맨 마지막에 들어온 데이터 먼저 차출됨(LIFO) 선입후출 - FILO(First In Last Out)구조로 삽입과 삭제 연산이 동일한 한군데에서 발생 - 삽입/삭제 연산에 있어 시간복잡도가 O(1) - 이전에 활용한 데이터를 역으로 추적하거나 처음 들어온 데이터보다 나중에 들어온 데이터가 빨리나갈 때 사용 - List의 pop() 을 활용하면 Stack처럼 사용할 수 있음 - Python에서 LifoQueue라는 구현체가 있음 - 활용예시: 브라우저 뒤로가기 앞으로가기, 깊이 우선 탐색(DFS) # 스택 직접 구현 class Stack(list): push = list.append def peek(self): # 가장 마지막에 있는 데..
삼항연산자 입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자. 단, 3항 연산을 사용한다. 따라서 3항 연산을 중첩해(괄호로 묶는 등..) 이용하면 여러 값들을 순서대로 비교해 가장 큰/작은 값을 계산할 수 있다. 예를 들어 (a if a>b else b) if ((a if a>b else b)>c) else c 와 같은 계산식은 a, b, c 의 값 중 가장 큰 값으로 계산된다. “연산자 우선순위”를 검색하면 우선순위와 결합방향이 나온다. 예를 들어 변수에 어떤 값을 대입하는 대입(assign) 연산자 = 의 우선순위는 가장 낮고, 오른쪽에서 왼쪽의 결합방향을 가진다. a, b, c = input().split() a = int(a) #변수 a에 저장되어있는 값을 정수로 바꾸어 다시..
비프시프트연산 왼쪽 비트시프트()가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고, 가장 오른쪽에 있는 1비트는 사라진다. 예시 n = 10 print(n1) #10을 반으로 나눈 값인 5 가 출력된다. print(n2) #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다. 정수 10의 2진수 표현은 ... 1010 이다. 10 > 1 을 계산하면 ... 101 이 된다. 이 값은 10진수로 5이다. ** python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다. (실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.) 정수 2개(a, b)를 입력받아 a를 2b배..
input 대신 sys.stdin.readline 시간복잡도 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. , 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다. import sys n = sys.stdin.readline()