no image
[파이썬] 프로그래머스 기사단원의 무기 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 약수의 개수는 약수의 정의와 소인수 분해의 성질로 확인할 수 있다. 약수(소인수)를 찾기 위해서 1(2) ~ N까지 전부 확인할 경우, 시간 복잡도는 $O(N^2)$이 돼 시간 초과가 발생한다. 약수(소인수) 탐색은 $\sqrt N$ 만큼만 확인해도 되는 점을 활용하면, 시간 복잡도를 $O(N\sqrt N)$으로 줄일 수 있다. from collections import defaultdict # 성분의 곱을 계산할 수 있다. from math import prod # 약수 개수 구하기 1..
2023.01.20
no image
[Linux] tree에서 특정 폴더, 파일 제외하기
사용 방법 -I(대문자 i) 옵션을 활용하면 된다. 옵션 뒤 " " 영역에 제외하고 싶은 폴더, 파일 명을 와일드 카드 패턴으로 나타내면 된다. 코드 예시 제거 전 !tree -L 2 ./text_recognizer # 출력 ./text_recognizer ├── callbacks │ ├── imtotext.py │ ├── __init__.py │ ├── model.py │ ├── optim.py │ ├── __pycache__ │ └── util.py ... 제거 후 !tree -L 2 ./text_recognizer -I "__pycache__" # 출력 ./text_recognizer ├── callbacks │ ├── imtotext.py │ ├── __init__.py │ ├── model.py..
2023.01.19
no image
[파이썬] 프로그래머스 숫자 짝꿍 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 공통된 숫자를 미리 확인한 뒤 필요한 숫자만 개수를 확인했다. 하지만 확인할 숫자의 개수가 10개 뿐이어서 굳이 그럴 필요는 없었던 거 같다. 0이 여러번 반복되는 문자열을 처리하기 위해서 정규 표현식을 사용 했다. from collections import Counter import re def solution(X, Y): answer = "" # 문자열로 변경 X, Y = map(str, (X, Y)) # 공통 숫자 확인 com_num = sorted(set(X) & set(Y), r..
2023.01.19
no image
[파이썬] 프로그래머스 명예의 전당 (1) 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 $k$개의 점수만 기록하려면 점수를 정렬해서 관리하는 것이 필요하다. $k$일 이후에는 가장 작은 값 1개만 제거하면 되기 때문에 우선 순위 큐를 사용해 시간 복잡도를 줄였다. 우선 순위큐의 push, pop의 시간 복잡도는 $O(\log N)$이다. import heapq def solution(k, score): answer = [] # 최하 점수만 확인하면 되기 때문에 heapq 사용 heap = [] for i in score: heapq.heappush(heap, i) # 개수 ..
2023.01.19
no image
[파이썬] 프로그래머스 과일 장수 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 박스에 담을 사과 개수가 $m$으로 고정돼 있어 내림차순 정렬만으로도 최대 가격을 설정할 수 있다. 내림차순으로 정렬하게 되면 매번 $m$ 번째 사과의 점수가 전체 사과 상자의 가격을 결정한다. # 점수가 가장 낮은 사과가 가격을 결정 # 따라서 점수가 높은 사과끼리 묶어야 최대 가격 설정 가능 def solution(k, m, score): answer = 0 score.sort(reverse = True) # idx 대소 비교 과정에서 계속 계산되기 때문에 미리 계산 score_len..
2023.01.18
no image
[파이썬] 프로그래머스 가장 가까운 같은 글자 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 아직 문자가 나오지 않은 경우엔 $-1$ 값을 가지기 때문에 초기 answer 성분을 -1로 설정했다. def solution(s): char_set = {} # -1로 초기화 answer = [-1] * len(s) for i, char in enumerate(s): # 문자가 이미 나온 경우 if char in char_set: answer[i] = i - char_set[char] # 위치 정보 업데이트 char_set[char] = i return answer
2023.01.18
no image
[Python] 프로그래머스 푸드 파이트 대회 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 동일한 메뉴가 양쪽에 위치하려면, 메뉴가 짝수개만큼 있어야 한다. 문자열은 sequence type이기 때문에 slicing이 가능하다. # -> 물
2023.01.18
no image
[파이썬] 프로그래머스 콜라 문제 풀이
문제 확인하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 a개의 콜라를 제출해서 1개의 콜라를 받는다고 가정하면, N개의 콜라는 Q 번 교환하는데 사용된 콜라와, 교환에 활용되지 못한 R 개의 콜라로 표현할 수 있다. Q번의 교환을 통해 얻을 수 있는 콜라의 개수는 콜라 교환비 값인 b를 곱해주면 된다. # 몫 : 새로 받을 콜라 개수, 나머지 : 남은 콜라 개수 def solution(a, b, n): answer = 0 # 교환 가능할 때 까지 실행 while n >= a: q, r = divmod(n, a) # 교환 비가 1보다 큰 경..
2023.01.17
no image
Github Stats의 Maximum retries exceeded 오류 해결하기
어떤 오류?Github Stats를 쓰다보면 위와 같은 메시지가 나오면서 원하는 카드(배지)가 나오지 않는 경우가 있다. 물론 시간이 지나면 다시 정상적으로 표시되긴 하지만, 가능하면 문제를 해결하고 싶었다. 느낌에 나만 겪을 문제는 아닌 거 같아서 isseus 탭에 들어가보니 이미 해결 방법과 문제 원인까지 다 나와 있었다 ㅎㅎ 우선 문제의 원인은 오류 메시지(maximum retries exceeded)에도 나와 있듯, 배포자에게 너무 많은 request가 있어서 병목이 발생하는 것이다. 이를 해결하기 위해서 감당할 수 있는 request 수를 지속적으로 늘리고 있다곤 하는데, 언젠가 또 이런 문제가 발생할 수 밖에 없는 구조다. Deploy on your own vercel instance 결국 문..
2023.01.16
no image
[Seaborn] scatterplot에 regression line 추가하기
regplot과 scatterplot 함께 활용하기 regplot의 점이 노출되지 않게 하려면 scatter = False로 설정해야 한다. fig, axs = plt.subplots(2, 1, figsize = (15, 10)) sns.regplot(data = test_final, x = "test_loss", y = "val_loss", scatter = False, ax = axs[0]) sns.scatterplot(data = test_final, x = "test_loss", y = "val_loss", hue = "test_pearsonr", ax = axs[0]) sns.regplot(data = test_final, x = "test_loss", y = "val_loss", scatter..
2023.01.14
no image
[Python] argparse 알아보기
argparse CLI를 통해 사용자 입력을 받아야 할 때 주로 활용한다. argparse.Argumentparser() 사용자 입력이 필요한 경우에 활용하자. 인자를 단순히 저장하는 것에 그치지 않고, 추가적인 행동을 명시해주고 싶을 때 활용하자 argparse.Namespace() 사용자 입력이 필요하지 않은 경우에 활용하자. argparse.py 구조 전체 코드에서 _AttributeHolder는 Action, Namespace, ArgumentParser만 상속한다. 인자를 저장하는 것이 모듈 목적인 점을 고려하면, 결국 Action, Namespace, ArgumentParser가 핵심인 것을 알 수 있다. 추가로 코드를 보면 ArgumentParser는 _ActionsCotainer 까지 상속..
2023.01.05
no image
Convolution을 Neural Networks에서 활용 하기
Summary CNN이 이미지 데이터에 많이 활용되는 이유는, 이미지 데이터의 stationarity, locality 가정에 적합한 연산인 Convolution을 활용하기 때문이다. Convolution은 기존 MLP와는 다른 방식으로 연산을 하기 때문에, Neural Networks 관점으론 Sparse interaction이고, 동시에 Parameter sharing이 있다고 말한다. 새로운 단어가 갑자기 나와서 '기존의 Convolution과 다른가?' 라고 생각이 들 수 있지만, 해당 용어들은 단순히 Neural Networks가 기준이 되면서 새롭게 붙여진 단어일 뿐이다. 커널 단위로 연산하기 때문에 Sparse 하다는 것이고, 커널의 가중치를 공유하기 때문에 Sharing이 있다고 말하는 것..
2022.12.30