Python 10

[Python/백준] 10989 수정렬3 - 메모리초과.. dict를 활용.

문제 : www.acmicpc.net/problem/10989 아무 생각없이 리스트를 활용하여 정렬하는 방식으로 풀면 아래와 같다. import sys n = int(sys.stdin.readline()) num_list = [] for _ in range(n): num_list.append(int(sys.stdin.readline())) sorted_list = sorted(num_list) for i in sorted_list: print(i) 이러면 메모리초과 오류가 발생한다. 리스트가 길어지면, append에서 메모리를 많이 사용하기 때문. 다른 블로그 글에서는 계수정렬을 하거나, 리스트를 미리 만들어놓고 값을 추가하는 방식으로 문제를 풀었다. 그런데 이런 방식은 별로 pythonic 하지 않다고..

알고리즘 2024.01.24

random 모듈

1. Random random 모듈은 임의의 값을 생성할 때 주로 사용함. 1) random.seed ( N ) -> 랜덤 숫자 생성의 초기화 작업. 2) random.random( ) -> 0.0 가우스 분포의 난수를 반환 5) random.randrange(start, stop, step) -> range( ) 의 아이템 중에서 임의의 값을 선택하여 반환 6) random.randint(a, b) -> a 입력받은 sequence를 섞음 import random random.random() #0.26483659 random.uniform(3,4) #3.328149852 for i in range(3): random.gauss(1,1.0) #1.347587 , 1,797528492 , 0.3846293..

Python/기초 2020.03.18

pd.concat / df.append / pd.merge

1. pd.concat( ) pandas.concat (objs, axis=0, join='outer', ignore_index: bool = False, keys=None, levels=None, names=None, verify_integrity: bool = False, sort: bool = False, copy: bool = True) axis = 0 (default) 0 = 세로 결합 1 = 가로 결합 join = outer (default) outer = 합집합으로 결합 inner = 교집합 결합 ignore_index = False (default bool) False면 기존의 인덱스를 그대로 유지해서 결합 True면 새로운 정수형 인덱스를 생성 keys = None (default seq..

Python/Pandas 2020.03.13

14. Pandas - 다중인덱싱(Multi Index)

1. 다중인덱싱 생성 인덱스가 2개일 수도 있을까? 인덱스가 2개인 경우, 다중 인덱싱이 가능하다. 인덱스가 사람이름, 교과목명 2가지인 경우, 다음과 같이 만들 수 있다. 1) DataFrame에서는 생성자에 2개의 인덱스 배열 리스트를 전달한다. 2) Series에서는 튜플을 키 딕셔너리로 전달함. 3) index 와 data가 따로 인경우, Series를 만든 후 reindex한다. 다음과 같이 인덱스를 MultiIndex로 만들어주고, 리인덱싱을 하면 다음과 같이 만들어 지게 된다. 2번째 인덱스가 English인 데이터에 접근하려면 아래와 같이 사용하면 된다. 4) 다중인덱스의 DataFrame만들기 인덱스와 칼럼에 각각 names를 만들어 주면 된다. 2. MultiIndex 메소드 1) un..

Python/Pandas 2020.03.12

9. python numpy 메소드

numpy는 numeric python의 약자로 파이썬의 연산을 빠르게 해주는 패키지이다. numpy의 메소드들이 엄청 많아서 모든것을 외울 수는 없다. 없으면 찾아서 적용하면 됨! 그래도 최소한 이런 것들이 있다는 것은 알아야 찾아볼 수 있을 것... 기본적으로 numpy는 C를 기반으로 연산하기 때문에, 파이썬의 계산보다 훨씬 빠르다. 따라서 numpy의 메소드에 for문을 사용하는 건 절대 하지말아야 할 일. 1. Array만들기 numpy는 dynamic typing을 지원하지 않음. 여러가지 형의 데이터를 넣을 수 없다. 숫자만 쓰도록 하자. #Rank 1 Array(1차원) #Rank 2 Array(2차원) #3차원은 tensor import numpy as np #1차원 x=np.array(..

Python/Numpy 2019.10.03

7. 파이썬의 클래스, 모듈, 패키지

Class 1. 클래스 생성 및 기초 같은 객체를 여러개 만들어야할 때, 클래스를 만들어두면 인스턴스를 쉽게 생성할 수 있다. class Bank: def __init__(self, name): self.name = name def get_name(self): return self.name def call_name(self, num): print("좋아 은행의 %s고객님은 %d번째 손님입니다" % (self.name, num)) x = Bank("Jack") print(x.get_name) x.call_name(3) 1)메소드는 def 함수명(변수): 내용 2) self라는 인수는 입력하지 않아도 알아서 인스턴스 명으로 호출되어 들어간다 3) __init__은 생성자로 클래스로 인스턴스를 만들때 반드시 ..

Python/기초 2019.09.22

6. 파이썬의 함수, 입출력

함수 1. 함수의 구조 1) 입력인수가 있고, 리턴값도 있음 def 함수명(입력 인수) : 내용 return 2) 입력 인수가 있고, 리턴값은 없음 def 함수명(a,b): 내용 3) 입력인수가 없지만, 리턴값만 있음 def 함수명(): 내용 return 4) 입력 인수가 없고, 리턴값도 없음 def 함수명(): 내용 2. 입력 값이 여러개일 경우 1) *args를 사용 def sum(*args): sum=0 for i in args: sum += i return sum 2) 일반 인수랑 *args를 동시에 사용할 수도 있다. def calc(what, *args): result = 0 if what == 'sum': if i in args: result += i elif what == 'sub': if..

Python/기초 2019.09.22

4. 파이썬의 자료형(딕셔너리, 집합)

1. 딕셔너리 key, value값을 가지는 자료형 순서가 없음(인덱싱이 불가능함) 리스트나 튜플과는 다르게 key값을 통해서 value값을 구함 d1={'sports':'baseball','name':'홍길동','age':'35','family':[홍버지, 홍머니]} #value에는 리스트를 넣을 수도 있다. 이때 ' '는 사용하지않는다. (숫자형도 마찬가지) d1['sports'] #key값을 갖는 value를 가져옴. 결과 : baseball 1) 딕셔너리 추가, 삭제 a={1:'a'} #삽입 a[2]='b' #a={2:'b',1:'a'} #삭제 del a[1] #a={2:'b'} 이때 1은 key값을 말함. 2) 관련함수 key리스트 만들기 keys d1={'sports':'baseball','n..

Python/기초 2019.09.19

1. 파이썬(Python) 설치 + IDE(Pycharm 설치)

빅데이터 및 머신러닝에는 파이썬이 최고 아니겠습니까? 파이썬 설치부터 시작해봅시다. 1. 파이썬 다운로드 https://www.python.org/downloads/ Download Python The official home of the Python Programming Language www.python.org 여기에서 최신버전으로 설치합시다. 2. Path 추가는 꼭 해주시고, Install now를 눌러서 진행합니다. 3. 설치가 끝나고, 혹시 저처럼 Disable path length limit 이라는 게 나온다면 눌러서 해제해 줍시다. 4. Pycharm도 다운로드합니다. https://www.jetbrains.com/pycharm/download/#section=windows Download..