일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 구현
- BFS
- 마법의숲탐색
- ARM
- 나무박멸
- 왕실의기사대결
- dfs
- 시뮬레이션
- DP
- 3Dreconstruction
- 토끼와 경주
- 이진탐색
- 삼성기출
- 순서대로방문하기
- 싸움땅
- 코드트리빵
- 코드트리
- 포탑부수기
- 슈퍼컴퓨터클러스터
- 수영대회결승전
- Calibration
- 마이크로프로세서
- 루돌프의반란
- DenseDepth
- ISER
- 소프티어
- ICER
- 조합
- ros
- Today
- Total
목록전체 글 (99)
from palette import colorful_colors
난 상어가 무섭다 import sys from collections import deque input = sys.stdin.readline INF = 1e9 N = int(input()) array = [list(map(int, input().split())) for _ in range(N)] # 필요한 변수 초기화 shark_size = 2 eated_number = 0 # 상어 크기 증가를 위해 필요한 변수 time = 0 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # 초기 상어 위치 파악하기, 먹을 물고기 파악하기 for i in range(N): for j in range(N): if array[i][j] == 9: shark_x, shark_y = i, j array[i..
참고서적: 이것이 코딩테스트다 with 파이썬 graph를 이용해 최단거리를 이용하는 방법이다. 다익스트라는 특정 노드에서 다른 노드로 가는 최단거리를 구하는 방법이고, 시간복잡도는 짜는 방법에 따라 O(V^2), O(ElongV)다. (V는 간선의 개수, E는 간선의 개수) 간선은 모두 양수여야 한다. 플로이드 워셜은 모든 노드에서 모든 노드로 가는 최단거리를 구하는 방법이고, DP를 이용해 구한다. 시간복잡도는 O(V^3)이다. 음수 가중치 간선이 있어도 수행할 수 있다. 다익스트라 알고리즘 먼저 거리를 무한으로 초기화하고, 출발노드부터 시작해 방문하지 않은 노드를 선택해 인접한 다른 노드로 가는 비용을 체크한다. 이때 해당 노드를 거쳐 다른 노드로 가는 거리가 다른 노드의 기존 거리보다 작다면 갱신..
참고서적: 이것이 취업을 위한 코딩테스트다 with python - 나동빈 메모리 공간을 더 사용하여 연산 속도를 증가시킬 수 있는 방법. ex) 점화식을 이용해 풀기 2가지 방법(top down, bottom up)이 있다. 예시: 피보나치 함수 # 피보나치 함수를 재귀로 구현할때 def pibo(x): if x == 1 or x == 2: return 1 else: return pibo(x-1) + pibo(x-2) print(pibo(4)) 이렇게 단순 재귀로 작성하면 n이 커질 수록 시간복잡도가 기하급수적으로 늘어난다. O(2^N) 따라서 dp를 이용한다. dp를 사용할 수 있는 경우: 1. 큰 문제를 작은 문제로 나눌 수 있다 2. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하..
import cv2 # Video, Image path / parameter video_dir = "비디오가 있는 경로" image_dir = "이미지가 저장될 경로" video_name = "비디오 이름" frame_gap = 30 video_path = video_dir + '\\' + video_name def main(): # Video open, information cap = cv2.VideoCapture(video_path) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) print("Video size = ({},{}) ".format(width, height)) co..
이번 포스팅에선 Opencv의 StereoSGBM을 이용해 disparity map을 구하고, meshlab 프로그램을 이용해서 3D reconstruction을 구하는 과정을 담았습니다. (사용한 left, right 이미지) cam0=[998.834 0 327.302; 0 998.834 245.534; 0 0 1] cam1=[998.834 0 368.275; 0 998.834 245.534; 0 0 1] doffs=40.973 baseline=203.047 width=701 height=487 ndisp=143 1. Disparity map 구하기: Code: import os import cv2 import numpy as np #left_image_path = './Newkuba/im0.png'#..
1. GPIO의 ODR 비트 조절하기 예시: GPIOA의 ODR의 8번 비트를 1로 켜기 C 언어: GPIOA->ODR |= 1UL ODR의 bit8을 1로 만든다 ARM 어셈블리어: GPIOA_BASE EQU 0x48000000; GPIOA의 BASE 주소는 0x48000000이다. GPIO_ODR EQU 0x14; ODR은 GPIO BASE에서 0x14만큼 떨어져 있으므로 LDR r7, = GPIOA_BASE LDR r1, [r7, #GPIO_ODR]; r1에 GPIOA의 ODR에 있는 값을 불러온다 ORR r1, r1, #2_100000000; 8번 비트를 1로 만든다 STR r1, [r7, #GPIO_ODR]; GPIOA의 ODR에 다시 변경한 값을 저장한다. 2. GPIO OUTPUT 예시: G..
참고서적: 이것이 취업을 위한 코딩테스트다 with python - 나동빈 up down 게임처럼 탐색범위를 반으로 쪼개면서 탐색하는 알고리즘. 따라서 시간복잡도는 O(logN)이다. 배열 내부 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘이다. 처리해야 할 데이터 개수나 값이 1000만이상처럼 무척 높으면 이진탐색과 같이 O(logN)의 속도를 내는 알고리즘을 떠올려야 문제를 풀 수 있는 경우가 많다. # 이진 탐색 구현 def binary_search(array, target, start, end): if start > end: return None # 아무런 값을 반환하지 않고 종료 mid = (start + end) // 2 # 찾은경우 중간점 인덱스 반환 if array[mid] == ta..
참고서적: 이것이 취업을 위한 코딩테스트다 with python - 나동빈 버블정렬, 선택정렬, 삽입정렬, 퀵정렬, 계수정렬, 파이썬 기본 정렬 함수(sort, sorted) 코드 첨부 0. 정렬 문제풀이 방법 - 정렬 라이브러리로 풀 수 있는 문제(sort, sorted): 정렬 라이브러리 사용방법 숙지하기 - 정렬 알고리즘의 원리에 대해 물어보는 문제: 선택 정렬, 삽입 정렬, 퀵 정렬 등의 원리를 알고 있어야함 - 더 빠른 정렬이 필요한 문제: 퀵 정렬 기반으로도 해결이 불가능할때, 계수 정렬 등의 더 빠른 알고리즘을 이용하거나 구조적으로 개선하기 예시: 문제에서 리스트의 최대 원소가 100000처럼 크게 주어졌을땐 O(NlogN)인 정렬 라이브러리나 퀵 정렬을 사용한다. 1. Bubble Sort..