코딩테스트 10

2021 삼성전자 인턴 코딩테스트 후기

삼성 대학생 인턴 모집 공고가 뜨자마자 처음으로 입사 서류란 것을 준비하기 시작했다. 이맘때쯤 학교에서 무료로 해주는 입사서류 컨설팅을 처음 받았는데 이때 내 자소서의 심각성을 깨닫고 처음부터 끝까지 갈아엎었다.^^ (휴 이때라도 깨달아서 다행;;) 자소서는 3월 22일까지 제출이었는데 발표는 4월 13일 저녁 6시쯤 나왔다. 첫 도전이었는데 처음 맛보는 '합격'이라는 두 글자에 마음이 너무 설레 버렸다. 그런데 기뻐하는 것도 잠시,, 코딩 테스트까지 2주 정도밖에 남지 않아 발표날 저녁부터 바로 코테 준비 모드로 돌입하였다. 코딩 테스트 준비 삼성 코딩 테스트 문제는 구현력 싸움이라고 생각한다. 누가 얼마나 꼼꼼하고 빠르게 구현할 수 있는가를 가장 중요시 여기는 느낌이다. 2문제에 3시간이므로 한 문제..

취준생활 2021.09.27

스코페(scofe) 2021 - 2차 후기

Startup Coding Festival - 스코페 2021 최고의 스타트업 개최 대한민국 개발자 1만명을 위한 scofe2021 ~3/17(수)까지 신청 접수! 대한민국 개발자 1만명을 대상으로 진행되는 스코페2021은, 분야별 최고의 스타트업들이 모여 개발자들만의 www.wanted.co.kr 일시: 2021년 3월 27일 (토) 14시~18시 제한 시간: 4시간 문제 수: 4문제 문제 1 - 오디션 연습 슬라이딩 윈도우 알고리즘 문제였다. 많이 연습하지 않았던 유형이라 처음부터 헤맸다.. (1번부터 헤매서 멘탈 바사삭) 문제 2 - AR-WORLD를 연결하자 MST 문제였다. 이 또한 힘들게 구현했다.. 문제 3 - 패키지 제조하기 dfs 문제였던 것 같은데 제대로 완성하지 못했다. 문제 4 - ..

취준생활 2021.09.16

스코페(scofe) 2021 - 1차 후기

Startup Coding Festival - 스코페 2021 최고의 스타트업 개최 대한민국 개발자 1만명을 위한 scofe2021 ~3/17(수)까지 신청 접수! 대한민국 개발자 1만명을 대상으로 진행되는 스코페2021은, 분야별 최고의 스타트업들이 모여 개발자들만의 www.wanted.co.kr 내 생애 첫 코딩 테스트(?)였던 스코페 2021 후기를 이제야 기록해보려 한다. 일시: 2021년 3월 20일 (토) 14시~18시 제한 시간: 4시간 문제 수: 6문제 문제 1 - 대여 시간을 추천해드립니다 public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedRe..

취준생활 2021.09.16

[이.코.테] 그래프 이론

💡 '서로 다른 개체가 연결되어 있다' or '여러 개의 도시가 연결되어 있다' ⇒ 그래프 알고리즘 그래프와 트리 속성 그래프 트리 방향성 방향 그래프 or 무방향 그래프 방향 그래프 순환성 순환 및 비순환 비순환 루트 노드 존재 여부 X O 노드간 관계성 부모와 자식 관계 X 부모와 자식 관계 O 모델의 종류 네트워크 모델 계층 모델 서로소 집합 union: 하나의 집합으로 합치는 연산 find: 특정한 원소가 속한 집합을 알려주는 연산 서로소 집합 알고리즘 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(parent, a, b):..

[이.코.테] 최단 경로

다익스트라 최단 경로 알고리즘 한 지점에서 다른 특정 지점까지의 최단 경로를 구해야 하는 경우 음의 간선이 없을 때 ex) GPS 그리디 알고리즘 매번 '가장 비용이 적은 노드'를 선택하기 때문 1. 출발 노드 설정 2. 최단 거리 테이블 초기화 3. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드 선택 4. 해당 노드를 거쳐 다른 노드로 가는 비용 계산 → 최단 거리 테이블 갱신 5. 위 과정에서 3,4번 반복 방법1: 간단한 다익스트라 시간복잡도: O(V^2) import sys input = sys.stdin.readline INF = int(1e9) # 10억 n, m = map(int, input().split()) # 노드 개수, 간선 개수 start = int(input()) # 시작..

[이.코.테] 다이나믹 프로그래밍

DP 사용 조건 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 탑다운(Top-Down) 방식 # 피보나치 수열 with 재귀 함수 d = [0] * 100 def pibo(x): if x == 1 or x == 2: return 1 if d[x] != 0: return d[x] d[x] = pibo(x-1) + pibo(x-2) return d[x] 보텀업(Bottom-Up) 방식 # 피보나치 수열 with 반복문 d = [0] * 100 d[1] = 1 d[2] = 1 for i in range(3, 99): d[i] = d[i-1] + d[i-2] 파이썬 재귀 제한 완화 import sys sys.setrecursionlimit(10**6)..

[이.코.테] 이진 탐색

순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 시간복잡도:O(N) 이진 탐색 배열 내부 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘 찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교하는 방법 시간복잡도:O(logN) 재귀 함수로 구현한 이진 탐색 def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 if array[mid] == target: return mid elif array[mid] > target: return binary_search(array, target, start, mid - 1) els..

[이.코.테] 정렬

정렬이란? 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 선택 정렬 매번 가장 작은 것을 선택하여 맨 앞과 교체하는 방법 시간 복잡도: O(N^2) for i in range(len(array)): min_index = i for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] 삽입 정렬 데이터를 하나씩 확인하며, 각 데이터를 적절한 위치에 삽입하는 방법 시간 복잡도: O(N^2), 데이터가 정렬되어 있는 경우 O(N) for i in range(1, len(array)): for j in range(i, 0, -1..

[이.코.테] DFS와 BFS

탐색이란? 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 자료구조란? 데이터를 표현하고 관리하고 처리하기 위한 구조 스택 (Stack) 선입후출 (First In Last Out) / 후입선출 (Last In First Out) 파이썬에서는 list 자료형을 스택으로 사용할 수 있다. stack = [] stack.append(5) stack.pop() 큐 (Queue) 선입선출 (First In First Out) 파이썬에서는 deque을 사용해 큐를 구현하는 것이 가장 빠른 방법이다. from collections import deque queue = deque() queue.append(5) queue.popleft() 재귀 함수란? 자기 자신을 다시 호출하는 함수 파이썬 인터프리터는 호출 횟..

[이.코.테] 주요 라이브러리

내장 함수 sum result = sum([1,2,3,4,5])# 15 min result = min(7,3,5,2)# 2 max result = max(7,3,5,2)# 7 eval result = eval("(3+5) * 7")# 56 sorted result = sorted([9,1,8,5,4])# [1,4,5,8,9] result = sorted([9,1,8,5,4], reverse=True)# [9,8,5,4,1] result = sorted([('홍길동', 35), ('이순신', 75), ('아무개', 50)], key=lambda x: x[1], reverse=True)# [('이순신', 75), ('아무개', 50), ('홍길동', 35)] sort - 내부 값이 바로 변경됨 data = ..