no image
[파이썬] 프로그래머스 프린터
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 원하는 location이 나올 때까지, 프린터 대기 목록을 수정하고, 위치 정보를 유지하는 것이 핵심이다. 이를 위해서 [ic]priorities[/ic]와 [ic]location[/ic] 정보를 각각 queue에 담아 처리했다. from collections import deque def solution(priorities, location): # 위치 / 우선 순위 저장 queue = deque(range(len(priorities))) priorities = deque(priorities) a..
2022.11.03
no image
[파이썬] 프로그래머스 기능 개발
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 배포 완료된 경우, pop(0)를 실행해야 하기 때문에 stack 대신 queue를 활용했다. 돌아보면 배포 가능한 프로그램을 굳이 담아둘 필요가 없었다. from collections import deque def solution(progresses, speeds): # 배포 / 개발 속도 progresses = deque(progresses) speeds = deque(speeds) answer = [] deploy_list = [] while progresses: # 하루 작업 진행 for i..
2022.11.01
no image
[파이썬] 프로그래머스 올바른 괄호
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 [ic]([/ic] 괄호가 나올 때만 스택에 저장해뒀다가, [ic])[/ic] 괄호가 나오면 pop()을 진행해 제거했다. pop() 과정에서 런타임 오류가 발생하지 않도록, 짝이 불가능한 경우 False를 바로 반환했다. def solution(s): # 짝 확인 stack = [] for char in s: if char == "(": stack.append(char) else: # 짝 불가능 if len(stack) == 0: return False else: stack.pop() return..
2022.11.01
no image
[파이썬] 프로그래머스 여행경로
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 가능한 여러 경로를 얻고, 이 중에서 가장 앞서는 경로를 찾는 것이 핵심이다. 이중에서 가장 앞서는 경로를 처리하는데 어려움을 느껴 다른 사람의 풀이를 참고했다. 백트래킹 활용 현재 위치 정보를 전달해서 중복된 방문을 제한했다. [ic]path[/ic] 들을 저장해둔 [ic]answer[/ic]를 정렬하면서 가장 앞서는 경로를 얻을 수 있었다. from collections import defaultdict def solution(tickets): # 방문 여부 visited = defaultdic..
2022.10.31
no image
[파이썬] 백준 N과 M (4)
15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 나의 풀이 오름차순이라는 조건을 만족시키기 위해서 [ic]get_num[/ic] 함수를 통해 최소 값을 전달해줬다. def get_num(k, min): if k == m: print(*num_list) return # 최소 값을 전달 for i in range(min, n + 1): num_list[k] = i get_num(k + 1, i) def solution(): global n global m n, m = map(int, input().split())..
2022.10.25
no image
[파이썬] 백준 N과 M (2)
15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 나의 풀이 수열이 오름차순인지 확인하기 위해서, 정렬 전후가 같은지 체크하는 방식으로 풀었다. 답은 맞았지만, 가능성이 없는 수열도 불필요하게 계산된다는 단점이 있다. def get_num(k): # 수열이 완성된 경우 if k == m: if sorted(num_list) == num_list: print(*num_list) return # 수열에 원소 저장 for i in range(1, n + 1): if not isused[i]: num_list[k] =..
2022.10.21
no image
[파이썬] 백준 N과 M (1)
15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 나의 풀이 백트래킹 유형 기본 문제라고 하는데, 어려워서 풀이를 참고하면서 풀었다. 원소 사용 여부를 저장하는 것이 핵심이었다. def get_num(k): # 수열이 완성된 경우 if k == m: print(*num_list) return # 수열에 원소 저장 for i in range(1, n + 1): if not isused[i]: num_list[k] = i isused[i] = 1 get_num(k + 1) # 사용 후 제거 isused[i] = 0..
2022.10.21
no image
오픈소스 컨트리뷰션 아카데미-파이토치 허브 : 마무리
마스터즈? 오픈소스 컨트리뷰션 아카데미의 챌린지 과정이 끝나면 바로 마스터즈 과정이 진행된다. 이름에서도 알 수 있듯, 마스터즈 과정은 오픈소스에 본격적으로 기여하는 기간이다. 이번 마스터즈의 활동 기간은 8.11 ~ 10.14 까지였고, 기여 내역을 정리한 보고서의 제출 기한은 9.14일이었다. 제출 기한이 정해져 있어서인지, 기여 활동은 주로 9.14일 이전에 진행됐다. 나는 파이토치 허브 번역에 참여해, 파이토치 허브 문서 번역과 기여 가이드 개선 작업을 수행했다. 마스터즈 기간 동안의 기여 내역을 정리하면 아래와 같다. 기여 내역 모델 번역 가이드 작성 파이토치 튜토리얼과는 달리, 파이토치 허브엔 문서 번역을 위한 가이드가 없었다. 그래서 팀원들과 함께 튜토리얼에 있던 가이드를 참고해, 허브를 위..
2022.10.12
no image
[논문 정리] Zero-Shot Text-to-Image Generation (2)
Data Collection 우선, 12억 파라미터로 이뤄진 초기 모델을 구성했다. 이때 330만 개 텍스트-이미지 쌍을 가진 Conceptual Captions 데이터셋을 활용했다. 최종 모델은 파라미터 수가 120억 개로, 이에 따라 Coceptual Captions 외에도 YFCC100M, 위키 피디아에서 얻은 텍스트-이미지 쌍을 추가해 데이터셋을 구성했다. 최종적으로 2억 5천만개의 text-image 쌍을 활용했다. 이때, 데이터 구성 과정에 활용한 필터링 방식은 Conceptual Captions에서 사용한 방식과 동일하다. Conceptual Captions에서 어떤 방식을 활용 했는 지는 아래 링크를 통해서 확인할 수 있다. [논문 리뷰] Conceptual Captions: A Clean..
2022.10.11
no image
[파이썬] 프로그래머스 단어 변환
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 단어를 변환하려면 1 글자만 달라야 하기 때문에, 이를 이용해서 그래프를 구성한 다음에 BFS로 탐색했다. from collections import deque def bfs(start, end, graph, visited): # 시작점 입력 + 방문 처리 queue = deque() queue.append([start, 1]) visited[start] = 1 while queue: node, cnt = queue.popleft() if node == end: return cnt else: for..
2022.10.11
no image
Gradient Checkpointing이란
GitHub - cybertronai/gradient-checkpointing: Make huge neural nets fit in memory Make huge neural nets fit in memory. Contribute to cybertronai/gradient-checkpointing development by creating an account on GitHub. github.com 모든 사진과, 글은 위의 링크를 참조했습니다. Graident checkpointing? GPU 사용 시 사용 가능한 메모리를 늘리기 위한 방법 중 하나이다. 이를 통해 연산 시간이 늘어나는 대신, 메모리 사용량 이 줄어든다. 아래 그래프는 ResNet 모델에서 최대 메모리 사용량을 비교했는데 blocks(N)..
2022.10.08
no image
[논문 리뷰] Conceptual Captions: A Cleaned, Hypernymed, Image Alt-text DatasetFor Automatic Image Captioning
MS-COCO의 문제점 COCO 데이터셋엔 그림은 없고, 사진만 있는 등 다양성이 떨어진다. 따라서 데이터가 high correlation을 가지게 된다. 이로인해 아이 사진에 대한 예측 결과를 확인하면 보이지 않는 사물에 대한 문장이 나오는 문제가 발생한다. 또한 파라미터 수가 점점 많아지는 모델들이 사용하기엔 데이터 수가 충분치 않다. Conceptual Captions 330만 개의 다양한 이미지-텍스트 데이터셋을 만들기 위해, 인터넷에서 얻을 수 있는 정보를 활용해 직접 새로 만들었다. MS-COCO의 문제점을 인식하고 만든 데이터라서 결과는 당연히 더 좋다. in front of a building, cake 등의 관련 없는 정보가 더 이상 안나온다. 마지막에 서류든 캐릭터를 COCO 데이터에선..
2022.10.08