본문 바로가기
728x90

분류 전체보기81

[c++] vector 입력 1. vector 초기화 안했을 시 push_back()으로 입력해야 함. v[i]처럼 인덱스로 입력 안됨. 2. vector 초기화 시 v[i] 처럼 인덱스로 접근하여 입력 가능 2023. 7. 25.
[c++] 백준 미로탐색(2178), BFS 문제 https://www.acmicpc.net/problem/2178 위와 같은 미로에서 1로 표시된 곳만을 통과하여, 좌측상단 -> 우측하단으로 가는 최단 경로의 수를 구하는 문제이다. 아래의 예시와 같이, n x m의 미로판이 주어지는데, 1과 0이 붙여서 주어지게 됨. 풀이 핵심 : BFS와 큐를 잘 이해하고 있는가. BFS는 상,하,좌,우를 탐색하여 다음 탐색할 그리드의 좌표를 큐에 쌓음. 큐는 first in first out 구조로써 먼저 큐에 쌓인 그리드의 좌표를 방문한다. 목표까지 최단거리를 구하는 문제는 큐에 쌓인 좌표들을 하나씩 방문해가면 된다. 목표에 가장 빨리 도달했을 때가 곧 최단거리가 됨. 아래 그림은 7x7미로판에서 1을 찾아 점차 경로를 찾는 과정을 보여준다. ... (중간.. 2023. 7. 25.
[c++] 2차원 배열(벡터) 선언 및 초기화 2차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 행과 열의 사이즈를 전역 상수 const로 할당 change_arr()함수 인자로 넘겨줄 시 사용 가능한 foramt을 보여줌 함수 내에서 값 변경시, 원본 값도 변경됨 모든 배열 값들을 특정 값으로 할당하기 위해서는, 1) 이중 반복문 2) fill() 이용 fill(arr[i], arr[i] + column, value) : i번째 행마다 column까지의 원소에 value를 할당함 2. vector를 이용한 선언 및 초기화 vector v(n, vector(m)) : (n,m)형태의 벡터 생성됨 vector안에 또 다른 벡터를 선언하.. 2023. 7. 25.
[c++] 1차원 배열(벡터) 선언 및 초기화 방법 1차원 배열을 선언하는 2가지 방법에 대해서 소개합니다. 1. 기본 배열로 선언 및 초기화 2. vector를 이용한 선언 및 초기화 1. 기본 배열로 선언 및 초기화 배열 선언시, const로 미리 지정된 size만큼 선언합니다. 여기서 "size"라는 이름으로는 할당이 안됨. void change_arr_value() 함수에서 배열은 arr[] or *arr2 형태 모두 동일하게 주소를 받아 원본 배열 값에 접근, 값 변경 가능. 배열의 모든 값을 특정 값으로 초기화 하는 방법은 2가지가 있음. 1) 반복문으로 일일이 값 할당 2) fill()을 이용한 할당. (동작은 동일하겠지만 간편히 한 줄로 작성 가능) 2. vector를 이용한 선언 및 초기화 #include를 통해 컨테이너를 불러옴. vec.. 2023. 7. 25.
[c++] 백준 그림 (1926), BFS 문제 https://www.acmicpc.net/problem/1926 입력 그리드와 1과 0으로 이루어진 값들을 받고, 1로 이어진 도형 개수와 최대 크기를 출력하는 문제. 도형은 상하좌우로만 이어질 수 있음. 풀이 BFS 알고리즘을 기반으로 모든 그리드의 좌표들에서 도형을 찾으면 됨 코드 알게 된 점 BFS 알고리즘 git 코드 https://github.com/intlabSeJun/c-plus-coding-test/blob/master/9.%20BFS/%EA%B7%B8%EB%A6%BC(1926).cpp 2023. 7. 24.
[Git] .gitignore 사용법 git으로 연동시에 로컬에 있는 특정 파일들을 제외시키고 싶을 때, .gitignore를 사용하면 간편합니다. 아래와 같이 오른쪽 파일들에서 제외시키고 싶은 것들을 echo 명령어로 .gitignore에 추가! 이후에 git저장소와 연동해주면 제외된 것을 보실 수 있습니다. 2023. 7. 24.
[c++] BFS example from 바킹독 BFS (Breadth First Search) : 다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘 예를 들어, 위와 같은 배열에서 파란색 지역을 탐색하는 알고리즘이다. 시작은 좌측 상단(0,0)에서부터 상,하,좌,우의 인접한 배열의 값들을 방문하여 파란색 좌표를 search한다. 이때, 그림에서 오른쪽과 같이 queue의 자료구조를 이용해, 현재 탐색하는 배열의 (행,열)의 번호를 저장한다. 새로운 파란색 점이 나올시 쌓이며(push), 이전에 탐색한 파란색 점의 정보는 제거한다(pop). queue가 비워질때까지 계속한다. queue는 #include에 있는 pair라는 쌍 자료형을 받을 수 있는 객체를 사용해서 queue에 쌓아준다. 관련 내용은 아래 링크에서 자세히 확인 할 .. 2023. 7. 24.
[c++] <STL> pair 사용법 pair는 두 종류의 데이터 타입을 하나로 묶어, 한번에 전달 할 수 있음 서로 연관된 2개의 데이터를 한 쌍으로 묶어서 처리할 때 편리하다. 아래와 같이 여러 데이터 타입을 묶어서 사용할 수 있음, queue 또는 vector 등과 같은 컨테이너와도 유용하게 같이 사용할 수 있음. 2023. 7. 24.
[c++] 백준 쇠막대기 (10799) 문제 https://www.acmicpc.net/problem/10799 레이저로 쇠막대기를 분리하는 문제 쇠막대기와 레이저 모두 문자열 '('와 ')'로 나타냄 풀이 문자열을 입력 받고, 하나씩 문자를 가져와 '('일 경우에 스택에 쌓음 ')'가 나왔을 시, 레이저로 간주하고 이전까지 쌓은 스택의 사이즈만큼 count. (잘린 쇠막대기 개수) ')'가 나왔을 시, 레이저가 아닌 경우, 쇠막대기를 닫는 경우를 위해 layzer라는 변수를 설정해서 on/off 해줌 layzer=0일 경우, 가장 안쪽의 쇠막대기가 닫히면서 count+1해준다. 코드 알게 된 점 스택의 활용 예외처리가 너무 힘들다 스택 문제라는 틀에 갇혀서 문제풀이가 더 어려워진 것 같다. 아니면 내가 스택을 잘 활용하지 못하거나. git .. 2023. 7. 23.
[Pytorch] Negative Pair Loss 코드 두 feature가 멀어지도록 학습하는 loss Negative Pair Loss = max(margin - distance_metric(feature_1, feature_2), 0) -------- (1) where, max(f(x),0)은 f(x) > 0 이면 backpropagation 수행, margin은 feature_1과 feature_2를 얼마나 멀게 할 것인지, distance_metric은 두 feature의 거리를 구하는 function. 즉, 두 feature의 거리를 구하고 margin을 더했을 시, 0보다 크면 역전파하여 멀어지게 한다. 이 term은 triplet loss에서 positive pair과 같이 사용되기도 한다. 그렇다면 어떻게 두 feature를 멀어지게 한다는 것.. 2023. 7. 21.
[Ubuntu] GPU 사용량 실시간 확인 nvidia-smi -l 1 : 1초마다 정보가 갱신되서 보여줌 watch -d -n 0.5 nvidia-smi : 0.5초마다 보여주는데, 바뀐 정보를 하이라이트 해준다. 2023. 7. 21.
[Pytorch] L1-loss, L2-loss, KLD-loss 역전파 L1 loss 역전파 및 언제 사용, 기대효과 L2 loss 역전파 및 언제 사용, 기대효과 + L1-loss의 미분값이 어떻게 업데이트 되는가? 딥러닝에서 학습되는 가중치 Weight는 다음과 같이 업데이트 됩니다. W = W - learning_rate * gradient_of_loss_with_respect_to_W 그렇기 떄문에, L1-loss로 인한 미분값 1 or -1의 값은 weight의 학습 뱡향을 바꾸게 됩니다. 예를 들어, 예측값 = 0.5, 정답값 = 0.7일 경우에 L1-loss의 gradient는 0.5-0.7 < 0 이므로, -1의 값이 됩니다. 이를, 가중치 업데이트에 반영하면, W = W + learning_rate * gradient_others (#others는 다른 lo.. 2023. 7. 20.
728x90