no image
Github Actions을 활용한 알고리즘 풀이 README 업데이트 자동화
알고리즘 문제를 풀고, 그 코드를 Github에 업로드하고 있다. 하지만 별도의 README 파일을 작성해두지 않아서 굉장히 어수선한 상태이다. 어떤 문제를 풀었고, 또 그 풀이를 어디서 확인할 수 있는지에 대한 정보가 전혀 없기 때문이다. '이제 정리해야지!'라는 생각에 README 파일을 직접 작성하려고 했다. 하지만 파일이 100개가 넘어서 굉장히 귀찮았다. '그냥 복붙 할까'라는 생각이 잠깐 들기도 했지만, 이왕 하는 거 코드로 한번 구현해 보자라는 생각이 들었다. README는 어떻게 작성? README를 통해 '문제 이름', '문제 링크', '풀이 파일 링크', '풀이 성공 여부' 정보를 제공하려고 한다. 현재 파일들의 경로는 baekjoon/solved/*/b1_1004.py(문제 이름)과 ..
2023.02.15
no image
[짧] Epoch, mini-Batch, Step 헷갈리지 않게 외우기
Epoch 전체 데이터를 모두 학습한 경우를 1 Epoch라고 한다. mini-Batch 전체 데이터를 일정한 크기로 나눠놓은 것으로, 여러 개(N)의 mini-Batch가 1 Epoch를 구성한다. 1 Epoch = mini-Batch $\times N$ Step $\theta$가 업데이트된 횟수로, 일반적으로 많이 활용되는 mini-Batch SGD에선 N과 동일하다.
2023.02.15
no image
[파이썬] 프로그래머스 피로도 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 던전의 최대 개수는 8개로, 각 던전 방문의 경우의 수는 8! = 40320이기 때문에 완전 탐색만으로도 풀 수 있다. 가능한 던전 방문의 순서를 얻기 위해서, 순열을 활용했다. # 던전 입장 조건 : 피로도 >= 최소 피로도, 던전 입장 후 : 피로도 -= 소모 피로도 # 최소 피로도 >= 소모 피로도 # 최대한 많이 탐험 -> 각 던전은 한번만 가능 # 가능한 경우의 수 : 8! : 40320 -> 완전 탐색으로도 풀 수 있음 from itertools import permutatio..
2023.02.15
no image
[파이썬] 프로그래머스 [3차] 압축 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 알파벳을 하나씩 더해서 새로운 단어를 만들고, 만약 그 단어가 사전에 없는 경우 저장한다. 이 경우 저장된 단어의 바로 이전 단어가 현재 사전에 중 가장 긴 단어이다. 마지막 단어가 사전에 있는 경우 체크가 되지 않기 때문에, 이를 방지하기 위해서 조건문을 추가했다. # 길이가 1인 모든 단어를 포함 하도록 사전 초기화 -> 알파벳 입력 # 현재 입력과 일치하는 가장 긴 문자열 w 찾기 -> 한 글자씩 더해가면서 있는지 확인 -> 만약 없다면, 새로 등록해야함! # w에 해당하는 색인 번..
2023.02.15
no image
Argument 때문에 jupyter notebook에서 NoneType 에러가 발생할 경우
원인 파이썬 파일 실행 시 !python3를 사용할 경우 Arguments가 인식되지 않아 NoneType 에러가 발생할 수 있다.!python3 파일명해결 방법%run 을 활용해서 파이썬 파일을 실행하자%run 파일명
2023.02.14
no image
[파이썬] 프로그래머스 k진수에서 소수 개수 구하기 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 정규 표현식을 활용한 풀이 1 : 에라토스테네스의 체 활용 → 시간 초과 작은 진법으로 변환 시, 에라토스테네스의 체로 저장 가능한 범위를 넘기 때문에 테스트 케이스 1을 통과할 수 없다. 100만을 2진수로 표현하면, 21개의 숫자가 필요한데, 그 이전에 분명 11111111111111...과 같은 숫자가 여러 번 나올 것 다양한 패턴을 한번에 확인하기 위해서, 정규 표현식의 Group을 활용했다. # 소수 판별 def get_prime(c): is_prime = [True] * (c ..
2023.02.14
no image
[파이썬] 프로그래머스 연속 부분 수열 합의 개수 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 성분의 개수($n$)을 늘려가며 부분 수열을 구성하면 되는 문제다. 끝점의 index가 범위를 초과할 경우를 처리해주는 것이 중요하다. 범위 초과 시 위 그림과 같이 표현할 수 있기 때문에 각 수열을 나눠서 합했다. def solution(elements): sum_unique = set() # 성분 개수 for n in range(len(elements)): # 시작점 for i in range(len(elements)): # 배열의 길이 초과할 경우 if n + i > len(elem..
2023.02.13
no image
[파이썬] 프로그래머스 전화번호 목록 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 처음 풀이 : 시간 초과 발생 접두어의 길이는 '최대 단어 길이 -1' 까지만 가능하다. 길이에 따라서 접두어 후보를 나누고, 이후 비교하는 방식으로 접근하려고 했다. 후보를 나누고, 비교하는 과정이 대략 $O(20 * (50000)^2)$이 되기 때문에 시간 초과가 발생했다. # 접두어 여부 확인 # 접두어? (최대 단어 길이 -1) 까지만 접두어가 될 수 있음 # 접두어 탐색 범위 : 나보다 길이가 더 긴 단어들만 확인 가능 # 길이에 따라서, 접두어 후보를 나누고, 이후 비교하면? ..
2023.02.10
no image
[파이썬] 프로그래머스 귤 고르기 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 귤 k개를 종류를 최소화하면서 구하려면, 많은 개수를 가진 종류부터 차례로 선택하면 된다. 개수를 세기 위해서 Counter를 활용했다. # 귤 k 개 -> 서로 다른 종류 최소화! # Counter 사용 후, 개수 기준 내림차순 정렬 from collections import Counter def solution(k, tangerine): # 귤 종류 수 tan_uniq = 0 # 종류 별 개수 세기 type_cnt = Counter(tangerine) type_cnt = sorted(..
2023.02.10
no image
[파이썬] 프로그래머스 [1차] 뉴스 클러스터링 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 처음 풀 때는 문제 조건을 제대로 확인하지 않아, 특수 문자 / 공백을 제거해서 풀었다. 이 경우 aa1+aa2와 AAAA12가 동일해지는 문제가 생긴다. 특수 문자 / 공백을 미리 제거 하면 문제가 생기기 때문에, 알파벳 여부를 원소를 만들 때 확인했다. # 자카드 유사도 : (두 집합의 교집합 크기 / 두 집합의 합집합 크기 # 중복 문자에 대해서도 처리 가능 # 둘다 공집합인 경우 -> 1로 정의 from collections import Counter def solution(str..
2023.02.09
no image
[파이썬] 프로그래머스 n^2 배열 자르기 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 $N = 10^7$이기 때문에 2 차원 배열을 선언하고, 각 성분에 값을 할당할 경우 시간 초과가 발생한다. 따라서 별도의 규칙을 찾아서 문제를 풀려고 했는데, 고민해도 생각이 안나서 다른 사람의 풀이를 참고해서 풀었다. 2 차원 행렬을 1 차원으로 펼칠 경우, 각 성분은 n으로 나눈 몫과 나머지로 표현할 수 있다. # n이 크기 때문에, n**2만 해도 시간 초과 발생! # 규칙을 찾아야 함 # 1 2 3 2 2 3 3 3 3 # (0,0) (0,1) (0,2) (1, 0) (1, 1)..
2023.02.09
no image
[파이썬] 프로그래머스 튜플 풀이
문제 확인 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 튜플은 원소의 순서를 고려해야 하기 때문에, 낮은 길이의 튜플부터 확인하면, 입력 순서를 확인할 수 있다. 각 성분으로 구성된 튜플을 얻기 위해서, 정규 표현식을 활용 했다. 숫자가 1번 이상 나오고, 이후 "," 와 숫자가 올 수도, 안 올수도 있도록 정규 표현식을 구성 했다. # 원소의 개수가 n, 중복되는 원소가 없는 튜플 # 튜플은 원소의 순서를 고려해야 함 -> 집합의 개수가 늘어날 수록 1 개 씩 추가 됨 # 이를 통해 튜플 원소의 순서를 알 수 있다! import re def..
2023.02.08