전체 글

Data Engineer를 거쳐 커머스 서비스를 개발하는 Backend Engineer로 커리어를 이어나가고 있습니다 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
·개발일기
1. People Space Internship 회사는 캘리포니아 실리콘벨리에 있고, 코로나 때문에 비대면으로 2달간 진행했다. 학교 연계해서 참여할 수 있었다. StockReader 라는, 주식을 ai 로 예측해서 알려주는 웹서비스를 개발했다. 파트는 ai/FE/BE로 나뉘었다. 난생처음 백엔드를 자처해서 해보겠다고 했다 매번 프로젝트 때 마다 프론트엔드를 위주로 했었는데, 서버 구조를 잘 이해해보고 싶어서 백엔드를 해보겠다고 했다. 취업을 생각하면 프론트이지만, 그래도 한번 해보길 잘한것 같다 !! 장고 프레임워크를 배우면서 바로 개발에 투입되어야 했다 빨리빨리!!! 배워야 하는 시기여서 좀 어려웠던 것 같다 (특히나 iOS도 새로운 프레임워크를 사용해야 했던 시기) 그러면서도 프론트에 데이터가 잘 ..
·Algorithm (PS)
https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 사실 for 문으로 출력해도 시간안에 풀 수 있었지만 , join으로 출력하는게 훨씬 시간 단축이 되었다 1. for문으로 출력할 때 2. join으로 출력할 때 기억해두자 !! n, m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())..
·Algorithm (PS)
https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 플로이드 알고리즘 그대로 구현하면 되는 문제이다. 단 !!! 시작 도시와 도착 도시를 연결하는 노선이 여러개일 수 있다 따라서 입력 받을 때, cost가 가장 작은 노선만 남겨두는 처리 과정이 필요하다 # 플로이드 INF = int(1e9) n = int(input()) # 도시 개수 m = int(input()) # 버스 개수 graph = [[INF]*(n+1) for _ in range(n+..
·Algorithm (PS)
https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 이진탐색 라이브러리인 bisect의 bisect_left와 bisect_right을 이용하여 같은 길이의 가사들 중에서 쿼리를 포함하는 단어의 첫 인덱스, 마지막 인덱스 차이를 구한다 ! 이진 탐색 라이브러리 bisect 정리 : https://sinclairstudio.tistory.com/85 python bisect, bisect_left, bisect_right Python에서 이진탐색을 라이브러리로 제공한다 ! bisect 라이브러리는 정렬된 배열 내에서 특정 원소를 찾을 때 O(logN)으로 동작한다. bisect_left() 함수..
Python에서 이진탐색을 라이브러리로 제공한다 ! bisect 라이브러리는 정렬된 배열 내에서 특정 원소를 찾을 때 O(logN)으로 동작한다. bisect_left() 함수 : 정렬된 순서를 유지하면서, 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메소드 bisect_right() 함수 : 정렬된 순서를 유지하면서, 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메소드 중요한건 정렬된 순서를 유지! 하면서 인덱스를 찾는것이다 예를 들어 리스트 [1, 2, 4, 4, 8] 이 있다면 bisect_left(a, 4)는 리스트에서 4가 처음으로 등장하는 위치인 2를 반환한다. 그리고 bisect_right(a, 4) 는 리스트를 4가 마지막으로 등장하는 위치 인덱스 +1 의 위치인..
·Algorithm (PS)
나의 시간 초과 코드 ㅋㅋㅋㅋ 답은 나오는데....비효율적이라는 거지 # 2110 공유기 설치 from itertools import permutations n,c = map(int, input().split()) array = [] for i in range(n): array.append(int(input())) result = 0 array.sort() # 탐색을 위해 정렬하기 for case in permutations(array, c): temp = n for i in range(c-1): temp = min(temp, case[i+1]-case[i]) result = max(temp, result) print(result) 이 문제의 유형은 이진탐색이다 .. 이진탐색 !!! 즉, '최대 인접 거..
https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net n = int(input()) array = list(map(int, input().split())) dp = [1]*n # 자기 자신 1개로도 길이가 1인 수열이 될 수 있으므로 1로 초기화를 해줍니다 ! for i in range(n): for j in range(i, n): if array[i] > array[j]: ..
·Algorithm (PS)
def solution(N, stages): answer = [] length = len(stages) for i in range(1, N+1): count = stages.count(i) if length == 0: fail = 0 else: fail = count/length answer.append((i, fail)) # 실패율이 0이어도 필요함 length -= count answer.sort(key = lambda x : x[1],reverse = True) answer = [i[0] for i in answer] return answer 유형 : 정렬 원래 풀이는, 스테이지 도달한 사람을 센 array, 실패율 array, 실패한 사람 array 각각 만들어줬었는데 시간 초과가 났다 ㅠㅠ 핵심..
minjiwoo
minji's engineering note