전체 글 316

[프로그래머스] 방문 길이 - Python

해당 문제는 Summer/Winter Codding(~2018)에 출제된 문제로 Level 2에 해당한다. 11 by 11 Matrix로 구성된 좌표 평면에서 캐릭터가 이동하고, 캐릭터가 지나간 길 중 처음 걸어본 길의 길이를 구하는 문제다. 입력이 'ULURRDLLU'로 주어졌다면, 아래와 같이 그려볼 수 있고, 8과 9에 해당하는 이동은 처음 걸어본 길이 아니기 때문에 빼고 값은 7이 된다. 두 번째 예시의 경우, 벽에 붙은 경우에는 이를 무시한다. 해당 문제는 좌표 평면 + 집합으로 계산하면 쉽게 해결이 가능하다. 집합을 통해 시작 지점과 끝 지점을 양방향 그래프, 무향 그래프로 표현하고 전체 길이에서 2를 나누게 되면 처음 방문한 거리가 나온다. 만약에 문제에서 방향 까지 고려한다고 했으면, 코드..

Python/Algorithm 2023.11.23

[프로그래머스] 더 맵게 - Python

섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 처음 문제를 접근했을 때는 아래와 같이 deque으로 접근했다. deque으로 접근하게 되면, 매번 Sorted를 통해서 정렬을 해주어야 하기 때문에 시간 초과가 발생했다. from collections import deque def solution(scoville, K): scv = deque(sorted(scoville)) cnt = 0 while min(scv) < K: cnt += 1 x, y = scv.popleft(), scv.popleft() scv.append(x + y*2) scv = deque(sorted(scv)) if len(scv) == 1: return -1 r..

Python/Algorithm 2023.11.22

[프로그래머스] 피로도 - Python

해당 문제는 DFS로 해결이 가능하다. DFS 는 깊이 우선 탐색으로, 한번에 던전을 갈 수 있는 끝까지 탐색한 후 이전 단계로 돌아가는 작업을하면 된다. 이때, 방문 여부와 방문 횟수를 초기화하고 다시 탐색을 하면 끝이다. answer = 0 def solution(k, dungeons): global answer def DFS(k, cnt, dungeons, visited): global answer answer = max(answer, cnt) # 최대 방문 횟수 for i in range(len(dungeons)): if visited[i] == 0 and k >= dungeons[i][0]: visited[i] = 1 # 방문 DFS(k-dungeons[i][1], cnt+1, dungeons,..

Python/Algorithm 2023.11.22

[Docker] ImportError: libGL.so.1: cannot open shared object file: No such file or directory

!apt-get update -y && apt-get install -y libgl1-mesa-glx && apt-get install -y libglib2.0-0 Docker 환경에서 OpenCV를 설치하는 과정에 발새하는 오류 유형 중 하나다. 이는, cv2에 해당하는 의존 패키지가 없을 때 발생하는 문제로, 아래 코드를 추가하면 쉽게 해결이 가능하다. RUN pip install opencv-python RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y RUN apt-get update -y && apt-get install -y libgl1-mesa-glx Docker Image를 불러올 때부터 처리를 하고 싶으면 아래와 같이 작성할..

Docker 2023.11.21

[프로그래머스] 의상 - Python

해당 문제는 Level 2에 해당하는 문제로, "해시"로 분류된 문제다. 조합 공식을 이용해 아래와 같이 쉽게 풀이할 수 있다. from collections import defaultdict def solution(clothes): inform = defaultdict(list) answer = 1 for cl in clothes: k, v = cl inform[v] += [k] for k in inform.keys(): n = len(inform[k]) answer *= (n + 1) return answer - 1 모든 의상에 대해서 가지고 온 후, 모든 조합을 계산한다. 이때 모든 조합이란, 옷을 아무것도 입지 않는 경우도 포함하는 것이다. 그렇기 때문에 마지막에 -1을 해주어서 값을 도출하면 된다.

Python/Algorithm 2023.11.16

[부스트캠프 AI Tech NLP] 네이버 부스트 캠프 2주차 회고

Contents PyTorch PyTorch 기초 문법 등을 다루고, PyTorch를 통한 다양한 예제를 다루었다. 딥러닝을 학습하기 위해 필요한 DataLoader, Dataset, Collate_fn 등의 함수를 세부적으로 뜯어보고, PyTorch에 있는 함수 등을 상세하게 다루었다. Numeric Data, Unstructured Data (이미지, 자연어 처리) 등 전체적으로 다루는 것 같다. 아직 세부 트랙별 과제로 나온게 아니라 모든 데이터에 대해서 다루는 것 같다. 추가적으로, Wandb, TensorBoard, Ray 등 모델 학습 관리에 있어 필요한 모델들에 대해서 배우고, 분산 처리, 최적화 등과 관련된 모델에 대해서도 배워서 나중에 많은 도움이 될 것 같다.

[부스트캠프 AI Tech NLP] 네이버 부스트 캠프 1주차 회고

Contents 운이 좋게도, 부스트캠프 AI Tech 6기에 참여하게 되었다. 내가 참여한 트랙은 자연어처리(NLP) 트랙이다. 원래 추천 시스템을 전공했기 때문에 RecSys에 참가하려고 했으나, 최근 NLP 관련 공고가 많아지고 있으며, 추천 시스템만 다루어서 취업을 하기엔 다소 어려움이 있다 생각하여 NLP 트랙으로 지원하였다. Python, 수학 첫 1주차에는 Python 기초 강의와 AI에 필요한 수학 지식(확률론, 수리 통계학 등)을 개략적으로 다루는 것을 시작으로, 딥러닝 관련 기초 내용들을 다루었다. 아무래도 대학원 시절에 해당 내용을 다루어 상대적으로 쉽게 다룰 수 있었던 내용이었다. 내용이 그래도 쉽기는 하지만 양이 엄청나게 많다.. 매일 꾸준히 들어야 겨우 이수할 수 있을 것 같다...

[프로그래머스] n^2 배열 자르기

프로그래머스 월간 코드 챌린지 3에 출제된 Level 2 난이도의 문제다. 초기 풀이는 extend를 활용해서 아래와 같이 작성하였다. def solution(n, left, right): ans = [] for i in range(n): l = list(range(i+1, n+1)) ans.extend([l[0]]*(n-len(l)) + l) return ans[left:right+1] 일부 케이스에서는 통과가 되었으나, 시간 초과가 발생한다. list를 생성하고 extend하는 과정에서 오래 걸리는 것으로 확인된다. 시간 복잡도를 줄이기 위해 몫, 나머지 개념을 도입했다. (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2) 1 2 3 2 2..

Python/Algorithm 2023.10.23

[Algorithm] 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)

깊이 우선 탐색(Depth-First Search)과 너비 우선 탐색(Breadth-First Search)은 코딩 테스트에서 단골로 출제되는 문제 유형 중 하나다. 깊이 우선 탐색 (DFS, Depth-First Search) DFS는 최대한 깊이 먼저 내려간 후, 더 이상 나아갈 곳이 없는 경우에 옆으로 이동하여 다시 탐색하는 방식이다. 0 -> 1 -> 3 -> 4 -> 2 -> 5 -> 6 의 형태로 움직이는 것이다. 미로 찾기 등과 같은 문제를 해결할 때 한 방향으로 끝까지 갈 수 있을 때까지 간 후, 더 이상 갈 수 없으면 가장 가까운 갈림길로 돌아와서 해당 갈림길 방향으로 다시 탐색하는 방식으로 볼 수 있다. 모든 경우의 수를 탐색하고자 할 때 DFS를 사용한다. 그러나, 모든 경우의 수를 ..

Python/Algorithm 2023.09.23

[프로그래머스] 예상 대진표 - Python

해당 문제는 대진표에서 대진을 하면서, A와 B가 몇 번째 붙는지를 찾는 문제다. A와 B는 무조건 계속 이긴다는 가정하고 있다. A와 B를 나누어서 결국 1, 2 혹은 3, 4 처럼 두 값의 차이가 하나 인 경우를 찾으면 된다. def solution(n,a,b): for i, _ in enumerate(range(n//2)): if abs(a-b) == 1 and (a//2) != (b//2): return i + 1 a = round(a/2 + 0.1) b = round(b/2 + 0.1) a//2 와 b//2가 같은 경우는 2, 3 혹은 4, 5 와 같은 경우다. 해당 경우는 다음 경기에 붙기 때문에 그 결과를 제외하고 처리를 하면 된다.

Python/Algorithm 2023.09.23

[프로그래머스] 점프와 순간 이동 - Python

해당 문제는 역순으로 생각하는 것이 키 포인트다. 마지막 예제 5000을 예시로 들면, 5000 -> 2500 -> 1250 -> 625 -> 624 -> 312 -> 156 -> 78 -> 39 -> 38 -> 19 -> 18 -> 9 -> 8 -> 4 -> 2 -> 1 -> 0 굵은 숫자를 보면, 1번씩 이동해야되는 경우가 발생한다. 즉, 나누어서 2로 떨어지지 않으면 K칸을 점프해야 된다는 것이다. def solution(n): ans = 1 while n != 1: if n % 2 == 0: n /= 2 else: n -= 1 ans += 1 return ans

Python/Algorithm 2023.09.16

[프로그래머스] 멀리 뛰기 - Python

해당 문제는 피보나치 수열로 문제를 풀 수 있다. def solution(n): if n == 1: return 1 else: p = [0] * n p[0] = 1 p[1] = 2 for i in range(2, n): p[i] = (p[i-1] + p[i-2]) % 1234567 return p[-1] 점화식으로 풀이를 진행했는데, 마지막에 1234567으로 나누지 않았을 때에는 테스트 케이스의 값이 너무 커서 런타임에러가 발생했다. 매번 값을 계산할 떄마다 1234567을 나눠주는 형태로 결과를 도출하고 마지막 p[-1] 값을 리턴하는 방식으로 해결할 수 있따.

Python/Algorithm 2023.09.16

[프로그래머스] 구명보트 - Python

해당 문제는 탐욕법(Greedy) 방식으로 접근하면 해결할 수 있는 문제다. 단순히 문제를 해결하는 것뿐만 아니라, 효율성도 따져야 하기 때문에 list로 접근하는 것 보다는 deque으로 접근하는 것이 더 편하다. list를 통해 pop(i)를 하게되면 list 내 존재하는 값을 한 번 서칭하고, pop을 하기 때문에 O(n)이 발생하지만, deque을 사용하면 O(1)로 해결이 가능하기 때문이다. from collections import deque def solution(people, limit): answer = 0 deq = deque(sorted(people)) while len(deq) > 1: if deq[0] + deq[-1] > limit: deq.pop() answer += 1 els..

Python/Algorithm 2023.09.16

네이버 Tune CIC Music AI 오토 태깅 면접 후기

네이버 Turn CIC에서 Music AI 오토 태깅 관련 체험형 인턴 모집에 지원했다. 서류 합격 발표는 일주일 정도 걸렸던 것 같고, 서류에 있었던 논문 내용을 기점으로 면접에서 기술하는 형태로 진행하였다. 모집 요강을 살펴보면, 쿠버네티스 관련 지식, SQL 지식, 딥러닝 지식, 콘텐츠 기반 지식이 있어야 가능한 것으로 보인다. 서류 합격 운이 좋게도 서류는 합격하여 면접 기회를 받게 되었다. 원래 분야가 음성 처리 쪽이 아니다 보니, 서류 합격에 의의를 두고 면접에 임하자고 생각했다. 면접 후기 기억나는 면접 질문은 다음과 같다. 본인의 현재 가지고 있는 역량으로 오토 태깅을 한다면 어떻게 할 수 있을지? 입사한다면, 자율적으로 업무를 진행하는 것이 좋은지, 아니면 케어하면서 진행하는게 좋은지? ..

Interview 2023.09.09
반응형