목록전체 글 (152)
호기심 많은 분석가
import sys n, m = map(int, sys.stdin.readline().split()) lis = set(sys.stdin.readline().rstrip() for _ in range(n)) see = set(sys.stdin.readline().rstrip() for _ in range(m)) ans = sorted(lis.intersection(see)) print(len(ans)) for i in ans : print(i) Solved.ac의 CLASS별로 문제를 풀고 있는데 이번 CLASS의 주제는 메모리와 시간 초과인가 보다. list를 사용해서 풀었더니 어림도 없었고, 중복되는 항을 찾기 위해 set의 intersection이라는 문법을 사용하였다. 사전 순으로 출력을 위해 s..
11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net import sys n = int(sys.stdin.readline().rstrip()) result = set() for _ in range(n) : com = sys.stdin.readline().split() if len(com)==1 : if com[0] == 'all' : result = set([k for k in range(1, 21)]) else : result = set() else : cd, x = com[0], int(com[1]) if cd == 'add' : result.ad..
목차 우리는 머신러닝 기법을 사용할 때 회귀 관련 모델을 사용하긴 한다. 가장 기본적인 선형 회귀(Linear Regression) 모델을 많이 사용할 텐데, 데이터의 분포가 직선이 아니라 곡선 형태를 띠고 있을 경우 오차가 크게 나타날 수 있다. 그럴 때 사용할 수 있는 다항 회귀를 헷갈릴 수 있는 다중 회귀와 비교하며 알아보자. 회귀 분석 (Regression Analysis) 그게 앞서 회귀 분석부터 알아보자 정의 회귀 분석이란, 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한 뒤 적합도를 측정해내는 분석 방법 회귀 분석은 시간에 따라 변화하는 데이터나, 어떤 영향, 가설적 실험, 인과 관계의 모델링등의 통계적 예측에 사용 회귀 분석은 하나의 종속변수와 하나의 독립변수 사이의 관계를 분석하..
나는 Pandas에서 기존의 열에 조건을 주어 새로운 열을 생성할 때 apply 함수를 주로 쓰곤 했다. 속도도 빠르고 코드도 짧기에, 근데 map과 applymap 함수도 있다고 들었는데 과연 이 친구들은 어디에 사용을 할까? map함수 map함수는 간단하다. DataFrame이 아닌 Series 타입에만 사용을 한다. 아래와 같은 방식으로 사용할 수 있다. 하지만 Series에 대해서는 map만 가능한가? apply도 같은 방식으로 사용이 가능하다. 그래서 apply를 선호. df['new_col'] = df['col'].map(lambda x : x+1) apply함수 대망의 apply함수다. DataFrame에서 여러 개의 컬럼을 사용하고 싶을 때는 apply함수를 사용해준다 df['new_col..
리스트 안의 리스트 중 unique 한 것만 남겨두기 위해서 set을 적용해 주었더니 아래와 같은 Error가 발생하였다. 무엇이 문제일까? TypeError: unhashable type: 'list' 리스트 안의 str 같은 원소들의 경우 별문제가 없다. 그렇다면 list가 unhashable 하다는 것이 무슨 의미인가? unhashable type: list hashable hashable이라는 것은 어떤 데이터를 hash 함수를 이용해서 hash값으로 변환할 수 있다는 것을 의미 hash는 어떤 특정 데이터에 대해서, 매우 유니크한 하나의 값을 가지게 된다. 그런데 원래 데이터가 변한다면, 이 데이터가 변함에 따라서 해당 hash 값도 변하게 될 것 따라서 hashable 하기 위해서는 immut..
되게 긴 for문을 실행시켜둘 경우 대체 이게 얼마나 진행된 건가... 언제 끝나나.. 하고 기다리곤 했다. 진행 상태를 보여주면서 이 궁금증을 해소시켜줄 tqdm이라는 라이브러리를 만나보도록 하자. 설치 어렵지 않다. 아래 구문을 통해 설치 가능 pip install tqdm 사용방법 tqdm을 import 한 뒤 for문의 range 앞에 붙여주면 간단하게 사용할 수 있다. +참고. print() 구문에서 end에 \r를 사용해주면 다음 출력 줄이 현재 줄에서 실행되는 것으로, 값이 덮어써진다. 이제까지 이 좋은 것을 몰라서 start_time과 end_time 비교해가면서, i 출력하곤 했지... 이 글을 본 여러분은 그 헛된 시간을 아낄 수 있을 겁니다. 화이팅해요! :)
9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net def isVPS(data) : while True : data = "".join(data) if '()' not in data : break data = data.split('()') if len(data) : print('NO') else : print('YES') import sys n = int(input()) for _ in range(n) : isVPS(sys.stdin.readline().strip()) 풀이✒️ 우리는..
2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net def show_result(data) : if len(data)==1 : return data else : if len(data)%2==0 : data = data[1::2] else : temp = [data[-1]] temp.extend(data[1::2]) data = temp return show_result(data) n = int(input()) arr = [i+1 for i in range(n)] answer = show_result(arr) pr..
10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net import sys from collections import Counter n = sys.stdin.readline().strip() arr1 = sys.stdin.readline().split() m = sys.stdin.readline().strip() arr2 = sys.stdin.readline().split() ct = Counter(arr1) print(' '.join(f'{ct[i]}' for i in arr2)) ..
로그는 수학함수의 일종으로, 어떤 수를 나타내기 위해 고정된 밑을 몇 번 곱하여야 하는지 나타내는 함수이다. 지수 함수의 역연산(Inverse operation)이다. 데이터 전처리 과정에서 너무 큰 수를 작게 처리해주고자 로그 함수를 사용하곤 하는데, 밑이 자연로그e 혹은 10, 또는 2 이냐에 따라 np.log(x), np.log10(x), np.log2(x)를 구분해서 사용합니다. 그렇다면 이번 포스팅의 핵심, np.log1p(x)는 도대체 무엇일까요? 로그함수의 경우 x=0을 넣어주면 y는 −∞의 값을 가집니다. 이럴 때 사용하는 방법이 x+1을 해줘서 0을 1로 바꿔주는 것입니다. np.log1p() 함수가 바로 그 역할을 해줍니다. 그렇게 되면 y 값이 −∞에서 0을 바뀌게 됩니다. np.lo..