| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
- programmers
- react-router
- 알고리즘
- redux
- react
- useDispatch
- JavaScript
- json-server
- 매일메일
- redux-toolkit
- axios
- 항해플러스
- sw expert academy
- java
- 테코테코
- redux-saga
- createSlice
- SW
- maeil-mail
- Get
- react-redux
- 코딩테스트합격자되기
- 프로그래머스
- Python
- 리액트
- C++
- 이코테
- 자바
- Algorithm
- 항해99
- Today
- Total
목록Algorithm (80)
Binary Journey
💡 해당 풀이는 코딩 테스트 합격자되기 - 자바편 에서 발췌된 내용을 바탕으로 작성되었습니다. 문제내용정수 배열을 정렬해서 반환하는 solution() 함수를 완성하세요. 제약 조건정수 배열의 길이는 2 이상 10^5 이하입니다.정수 배열의 각 데이터 값은 -100,000 이상 100,000 이하입니다. 입출력의 예입력출력[1, -5, 2, 4, 3][-5, 1, 2, 3, 4][2, 1, 1, 3, 2, 5, 4][1, 1, 2, 2, 3, 4, 5][6, 1, 7][1, 6, 7] 기록하기💡 어디까지 생각해봤는지 단계적으로 기록해봅니다. 풀이풀이 시간시작 시각종료 시각총 소요 시간23:2123:4221분 문제 분석제약 사항 파악 & 테스트 케이스 작성입출력 모두 정수 배열정수 배열의 길이..
 [Algorithm] 다익스트라 최단 경로 알고리즘
      
      
        [Algorithm] 다익스트라 최단 경로 알고리즘
        출처: https://youtu.be/acqm9mM1P6o - 나동빈 이코테 import sys input = sys.stdin.readline INF = int(1e9) # n: 노드, m: 간선 n, m = 6, 5 # start: 시작 노드 start = 1 # graph: 연결되어 있는 노드 정보 리스트 graph = [[] for i in range(n + 1)] # 방문 여부 체크 리스트 visited = [False] * (n + 1) # 최단 거리 테이블 초기화 distance = [INF] * (n + 1) # # 모든 간선 정보 입력받기 # for _ in range(m): # a, b, c = map(int, input().split()) # # a -> b 일 때 비용은 c # gr..
 [이코테] 4. 정렬 알고리즘
      
      
        [이코테] 4. 정렬 알고리즘
        * 선택정렬 - 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾼다 * n result = [] def selection_sort1(data): if len(data) > 1: n = data[0] m = data[1:] temp = min(m) index = 0 if n > min(m): index = m.index(temp) m[index] = n result.append(temp) else: result.append(n) return selection_sort1(m) else: result.append(data[0]) def selection_sort2(array): for i in range(len(array)): min_index = i for j in rang..
* DFS def dfs(graph, v, visited): visited[v] = True print(v) for i in graph[v]: if not visited[i]: dfs(graph, i, visited) graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, 7] ] visited = [ False for i in range(9) ] dfs(graph, 1, visited) * BFS from collections import deque def bfs(graph, start, visited): queue = deque([start]) visited[start] = True while queue: v = ..
 [이코테] dfs & bfs 문제풀이
      
      
        [이코테] dfs & bfs 문제풀이
        graph = [] n, m = map(int, "4 5".split()) example = [ "00110", "00011", "11111", "00000" ] for i in example: graph.append(list(map(int, str(i)))) def dfs(i, j): if i = n or j = m: return False if graph[i][j] == 0: graph[i][j] = 1 dfs(i - 1, j) dfs(i + 1, j) dfs(i, j - 1) dfs(i, j + 1) return True return False result = 0 for i in range(n): for j in range(m): if dfs(i, j): result += 1 print(result..
 [이코테] 구현: 시뮬레이션과 완전탐색
      
      
        [이코테] 구현: 시뮬레이션과 완전탐색
        * 상하좌우 n = int(input()) a = input().split() _dict = { 'R': (0, 1), 'L': (0. -1), 'U': (-1, 0), 'D': (1, 0) } location_v = 1 location_h = 1 while a: direction = a.pop(0) if direction == 'R' and location_h == n: pass elif direction == 'L' and location_h == 1: pass elif direction == 'U' and location_v == 1: pass elif direction == 'D' and location_v == n: pass else: location_v += _dict[direction][0]..
 [이것이코딩테스트다][MEMO] 10, 11강, 12강, 13강
      
      
        [이것이코딩테스트다][MEMO] 10, 11강, 12강, 13강
        강의 듣다가 필요한 부분은 메모를 하려 한다. * 그리디 알고리즘에서 본 식인데 처음에 생각한 식이 모든 수를 탐색해서 -1을 한 뒤 결과를 도출해내는 방식이었다. 근데 그러면 시간 복잡도가 O(K) 인데 시간복잡도를 O(logK) 로 바꿀 수 있는 식이라 해서 메모한다. (target 은 n을 k로 나눈 몫 * k 로 나머지 없는 수다.) n, k = map(int, input().split()) result = 0 while n >= k: target = (n // k) * k result += (n - target) n = target result += 1 n //= k result += (n - 1) print(result) * 곱하기 혹은 더하기 data = map(int, str(input()..
 [이것이코딩테스트다][MEMO] 4, 5, 6, 7, 8, 9강
      
      
        [이것이코딩테스트다][MEMO] 4, 5, 6, 7, 8, 9강
        영상: https://youtu.be/m-9pAwq1o3w * 시간복잡도까지 나와서 알아두면 좋을 거 같아 캡쳐해옴 + 파이썬에서는 removeAll을 제공하지 않아 removeAll을 사용하고 싶다면 사용자함수를 따로 만들어야 함 * 튜블은 리스트와 비슷하게 생겼으나 변수 재할당 불가능, 인덱스별 원소 할당 불가능 * 리스트보다 메모리 소비가 적음 * python의 dict에서 keys, values 는 javascript의 Object.keys(객체), Object.values(객체) 랑 비슷 * 집합 자료형 참고사항 # unpacking a, b, c = input().split() # packing import sys # 문자열 입력받기 data = sys.stdin.readlin().rstrip..
당장 눈 앞의 최적의 상황만을 좇는 알고리즘, 어느 조건에서는 최적의 해 보장 def greedy(n): result = 0 result += int(n / 500) n %= 500 result += int(n / 100) n %= 100 result += int(n / 50) n %= 50 result += int(n / 10) print(result) if __name__ == "__main__": n = int(input()) greedy(n) def greedy(n): result = 0 div, mod = divmod(n, 500) result += div n = mod div, mod = divmod(n, 100) result += div n = mod div, mod = divmod(n, 5..
 [Algorithm] 라빈 카프 알고리즘
      
      
        [Algorithm] 라빈 카프 알고리즘
        35강에 대한 리뷰 일반적인 경우 빠르게 작동하며 간단한 구조를 가진 문자열 매칭 알고리즘이다. 해시 기법을 이용하여 단순 해시 알고리즘의 경우 연산 속도가 O(1)에 달한다. 동일한 해시값이 발생하는 이른바 충돌이 발생할 수도 있는데 발생률이 낮아 무시하고 지나간다. 보통 공식은 긴 글 해시값 = 2 * (긴 글 해시값 - 가장 앞 문자의 값) + 새롭게 들어온 문자의 값 def find_string(parent, pattern): parent_len = len(parent) pattern_len = len(pattern) parent_hash = 0 pattern_hash = 0 power = 1 for i in range(parent_len - pattern_len + 1): if i == 0: f..