본문 바로가기

전체 글

(594)
[JAVA] exe파일 실행, Java에서 cmd 사용하기 MS949를 해야 글자가 안 깨진다. /C는 다음과 같은 옵션이다. (/C옵션) /C 문자열이 지정한 명령어를 수행한 후에 종료합니다. 저 위의 명령어가 String 배열로 입력이 들어가는 것이다. 내부적으로 실행하는 방법은 Runtime Class를 이용하여 별도로 Thread를 이용하여 실행하는 방법이다. 원래 Java의 경우 Java 실행시 Runtime Class 실행하여 1개의 Thread를 생성한다, 내부적으로 Runtime Class를 하나 더 생성하여 도스명령어를 이용한 데이터를 가져온다. 이상이다. 만약 DB 백업 을 원하신다면 아래와 같이 데이터를 넣으면 쉽게 적용할 수있다. cmd[0] = "cmd.exe"; cmd[1] = "/C"; cmd[2] = "mysqldump -u root..
'undefined reference' with 'not declared' In the first case, you declare a function, but don't define it. It compiles properly, but doesn't link because there is no definition for f. Hence the linker error. 선언만 하고 정의는 하지 않았다. 컴파일은 하지만 링킹은 할 수 없다. In the second case, you attempt to call an undeclared symbol. The compiler doesn't know what f is, so it issues an error. It's a different problem from a different stage of the compilation proc..
[BOJ] 2579 계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 쓸데없는 조건문을 엄청 만들어서 하고 있었는데 그런 코드는 좋은 코드가 아니라는 걸 다시 한 번 배우고 간다. DP 배열의 조건을 확실히 이해하고 선언해 놓아야한다. #include #define MAX 300 using namespace std; int n, A[MAX+1],DP[MAX+1]; void input(){ cin >> n; for(int i =1 ; i > A[i]; } void solve(){ DP[1] =A[1]; DP[2] =A[1]+A[2]; for(i..
[CUDA] Thread, Block(SM), Grid(GPU) CUDA를 게임 프로젝트에 적용하기 CUDA를 게임 프로젝트에 적용하기 유영천-모여서 각자 코딩하는 모임 https://megayuchi.com tw: @dgtman www.slideshare.net
[C&C++] 구조체 비트 필드 사용하기 이제 구조체를 7비트, 3비트, 1비트로 나눠서 비트 필드를 정의해보겠습니다.▼ 그림 56‑1 구조체 비트 필드 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. C 언어 코딩 도장: 56.1 구조체 비트 필드를 만들고 사용하기 56 구조체 비트 필드 사용하기 지금까지 구조체의 멤버는 각 자료형 크기만큼 공간을 차지했습니다. 하지만 구조체 비트 필드를 사용하면 구조체 멤버를 비트 단위로 저장할 수 있습니다. 특히 C dojang.io
[C++] static_cast, reinterpret_cast 형 변환 연산자: static_cast와 reinterpret_cast의 차이 이번에는 간단하게 static_cast와 reinterpret_cast의 차이점에 대하여 알아봅니다. 실제로 이 두가지는 비... blog.naver.com 컴퓨터는 비트 단위로 정보를 저장합니다.1 당연히 정수 5와 실수 5.0은 엄청난 차이가 있습니다. 단순히 변환을 명령했더니 이러한 복잡한 처리를 내부에서 전부 해줍니다. 이것이 static_cast입니다. static_cast는 형 변환을 요청받으면 내부에서 지정된 형 변환 함수를 호출합니다. int와 float사이에도 그러한 함수가 있는 것입니다. 다음 예제를 봅시다. 당연히 형 변환은 일어나지 않습니다. 그도 그럴것이 형 변환 함수도 없으며 어떻게 변환해야되는지 컴파..
[C++] const_cast const_cast(expression) const_cast(대상) const_cast는 포인터(pointer) 또는 참조형(reference)의 상수성(const)를 잠깐 제거해주는데 사용합니다. const_cast는 volatile 키워드를 잠깐 제거해 주는 데에도 사용이 가능합니다. 다른 캐스트 연산자가 하는 형 변환은 불가능 하며 오직 상수성(const)를 제거하는 것만 사용가능 합니다. 또한 다른 캐스트 연산자는 const_cast가 하는 상수성(const) 제거를 하지 못합니다. 함수 포인터에는 사용 불가능합니다. (해봤음;;) > 예제(1) - 포인터(pointer) 상수성(const) 제거 #include using namespace std; int main(void){ char str[]..
[C++] type cast 4가지 종류 static_cast const_cast reinterpret_cast dynamic_cast [C++] const_cast (타입 캐스트 연산자) 안녕하세요. BlockDMask 입니다. 오늘은 C++ 의 네가지 타입 캐스트 연산자 중에 (static_cast, const_cast, reinterpret_cast, dynamic_cast) const_cast 에 대해 알아보겠습니다. > const_cast 에 관한 기본 특.. blockdmask.tistory.com
[Linux] gcc 로 C++ 컴파일 하기 일반적으로 리눅스 환경에선 C 은 gcc 로 컴파일 하고 C++ 은 g++로 컴파일 하게 되죠 그러나, 간혹 여의치 않은 상황에서 gcc 로 C++을 컴파일 할수 밖에 없는 상황에 봉착하는 경우는 -lstdc++ 온션을 붙여주면 됩니다. 가령 gcc hello.cpp -o hello -lstdc++ 그러나, 애지간하면 C++ 은 걍 g++로 컴파일 합시다. 나중에 라이브러리 링크 등에서 복잡한 문제들에 봉착할수 있거든요. gcc 로 C++ 컴파일 하기 gcc 로 C++ 컴파일 하기 일반적으로 리눅스 환경에선 C 은 gcc 로 컴파일 하고 C++ 은 g++로 컴파일 하게 되죠 그러나, 간혹 여의치 않은 상황에서 gcc 로 C++을 컴파일 할수 밖에 없는 상황에 봉착하는 bitsoul.tistory.com
[BOJ] 1107 리모컨 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 충격과 공포의 문제이다. 엄청 더럽게 if문 많이 해서 풀었는데 전혀 그런식으로 푸는 문제가 아니었다. 브루트 포스로 처음부터 끝까지 하나하나 확인하면서 가는 문제이다. 반례↓ 글 읽기 - [반례모음] 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net 1555 8 0 1 3 4 5 6 7 9 670 10 9 1 2 3 4 5 6 7 8 9 11 0 9 1 2 3 4 5 6 7 8 9 1 100000 9 0 1 2 3 4 5 6 7..
[C++] 함수를 객체로 (C++ std::function, std::mem_fn, std::bind) 씹어먹는 C ++ - modoocode.com Callable 의 정의 std::function std::mem_fn std::bind 1. Callable Callable 이란, 이름 그대로 나타내듯이 호출(Call) 할 수 있는 모든 것을 의미합니다. 대표적인 예시로 함수를 들 수 있겠지요. 하지만 C++ 에서는 () 를 붙여서 호출할 수 있는 모든 것을 Callable 이라고 정의합니다. 예를 들어서 f 역시 일반적인 함수의 꼴을 하고 있지는 않지만, () 를 통해서 호출할 수 있기에 Callable 이라 할 수 있습니다. 2. std::function C++ 에서는 이러한 Callable 들을 객체의 형태로 보관할 수 있는 std::function 이라는 클래스를 제공합니다. C 에서의 함수 포인..
[C++] 무한대(infinity) [C++] infinite infinite 이미지좀 가져올라고 검색했더니 가수 인피니트가 뜬다....짜증난다..우선 C++에는 무한대 타입이 존재한다. 의 std::numeric::limits::infinity() 이다.하지만 이 메소드는 실수타입에서만 제 velog.io
[C++] 우선순위 큐(Priority Queue), pair<int, int> 내림차순 오름 차순 [C++] STL Priority_Queue Library 기본 명령어 정리 안녕하세요, 여행벌입니다. 오늘은 우선순위큐(Priority Queue)에 대해서 알아보도록 하겠습니다. 1. Priority_Queue(우선순위큐) 란? Priority_Queue는 Queue의 한 종류로 이름 그대로 우선순위에 따라 정렬된 travelbeeee.tistory.com [C++, STL] 우선순위 큐(priority queue) 비교연산자 구현 서론 2020/04/27 - [자료구조와 알고리즘] - [C++, STL] 알고리즘 문제풀이를 위한 우선순위 큐(priority queue) 우선순위 큐는 비교연산자를 통해 자료의 우선순위를 정할 수 있다. 그리고 STL에는 자료를 hydroponicg..
[C++] 2차원 배열 초기화 2차원배열의 모든 원소의 값을 1로 하고 싶은 경우 1)각 원소 직접 지정 int arr[5][5]={{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1}}; 이렇게 int arr[5][5]={{1}}; 하나만 지정하면 나머지는 모두 0이 들어갑니다. 다시 해보니 안되네요... int area[M][N]={{1,0,0,0,0},}; 로 한줄은 해줘야 나머지가 모두 0이 들어갔습니다. 2)std::fill_n 이용 int arr[5][5]; fill_n(arr[0],25,1) fill_n(arr,25,1)은 에러가 납니다. arr, arr[0]의 메모리주소를 확인해보면 값은 같은데... 3)std:fill이용 int arr[5][5]; fill(arr[..
다익스트라(Dijkstra) 알고리즘 23. 다익스트라(Dijkstra) 알고리즘 다익스트라(Dijkstra) 알고리즘은 다이나믹 프로그래밍을 활용한 대표적인 최단 경로(Shortest Path) 탐... blog.naver.com 1. 출발 노드를 설정합니다. 2. 출발 노드를 기준으로 각 노드의 최소 비용을 저장합니다. 3. 방문하지 않은 노드 중에서 가장 비용이 적은 노드를 선택합니다. 4. 해당 노드를 거쳐서 특정한 노드로 가는 경우를 고려하여 최소 비용을 갱신합니다. 5. 위 과정에서 3번 ~ 4번을 반복합니다. 최소 비용을 단순히 선형 탐색으로 찾도록 만들었습니다. 이렇게 작성하는 경우 다익스트라의 시간 복잡도가 O(N^2)으로 형성됩니다. 따라서 최대한 빠르게 작동시켜야 하는 경우 힙 구조를 활용하여 시간 복잡도 O(N * lo..
[BOJ] 2615 오목 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 반례↓ 글 읽기 - 누가 기침소리를 내었는가? 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net 틀린 이유 6개 이상일 경우 → 이전 값까지 모두 확인해야 한다. 이전 값이 없을 때만 온전히 5개인지 검사할 수 있다. visit를 쓸 경우 관계 없는 경우의 새로운 케이스에 대해 검사하지 못한다. #include int a[19+2][19+2]; int main() { int i, j; for(i=1; i
[BOJ] 7573 고기잡이 7573번: 고기잡이 한국인의 식단에서 생선은 매우 중요한 단백질 공급원이다. 반면, 지구 온난화로 인한 바닷물의 온도 상승, 그리고 지금까지 마구잡이로 물고기를 잡은 결과로 점점 우리나라의 바다에서 물고 www.acmicpc.net 단순한 방법으로 하면 4중 중첩이 된다. 당연히 시간초과가 난다. 물고기를 기준으로 for문을 돌려야 한다. ▶그물의 크기를 정하고 (sx, sy) 위치를 탐색할 때, 모든 지점을 탐색하면 TLE 발생 위와 같이 (4, 3)에서 그물을 치는 것은 비효율 적입니다. ▶ 어디를 (sx, sy)로 설정하는 것이 좋을까요? 물고기가 존재하는 위치 & 물고기간의 교차점 ※ (2, 3)과 (4, 5)과 주어질 때 두 좌표의 교차점은 (4, 3)과 (2, 5) 입니다. #include ..
'틀렸습니다'를 받지 않기 위한 팁 https://www.secmem.org/blog/2021/02/19/wa/ '틀렸습니다'를 받지 않기 위한 팁 개요 이전 글들에서 시간 복잡도를 고려한 코드 설계 전략과 PS에서의 런타임 에러와 디버깅에 대해 각각 다루어 보았습니다. ‘시간 초과’와 ‘런타임 에러’는 모두 오답 판정 중 특수한 경 www.secmem.org
[PyTorch] numpy.mean() Python Numpy.mean() - 산술 평균 numpy.mean() 함수는 지정된 축을 따라 배열의 산술 평균을 계산합니다. www.delftstack.com
[PyTorch] torch.tensor.sum(), torch.tensor.mean(), torch.tensor.max() dim 은 해당 dim을 모두 합친다. 하나의 그룹이라 생각하고 계산한다.
[ML] LSTM (Long Short-Term Memory, 장단기 메모리) 2 위 그림에서 A는 RNN의 한 덩어리이다. A는 input xtxt를 받아서 htht를 내보낸다. A를 둘러싼 반복은 다음 단계에서의 network가 이전 단계의 정보를 받는다는 것을 보여준다. 이러한 RNN의 반복 구조는 혹여 불가사의해 보일 수도 있겠지만, 조금 더 생각해보면 RNN은 기존 neural network와 그렇게 다르지 않다는 것을 알 수 있다. RNN을 하나의 network를 계속 복사해서 순서대로 정보를 전달하는 network라고 생각하는 것이다. 아예 반복을 풀어버리면 좀 더 이해하기 쉬울 것이다. 이렇게 RNN의 체인처럼 이어지는 성질은 곧장 sequence나 list로 이어지는 것을 알려준다. 이런 데이터를 다루기에 최적화된 구조의 neural network인 것이다. 그리고 진..
[ML] LSTM (Long Short-Term Memory, 장단기 메모리) 1 바닐라 아이스크림이 가장 기본적인 맛을 가진 아이스크림인 것처럼, 앞서 배운 RNN을 가장 단순한 형태의 RNN이라고 하여 바닐라 RNN(Vanilla RNN)이라고 합니다. (케라스에서는 SimpleRNN) 바닐라 RNN 이후 바닐라 RNN의 한계를 극복하기 위한 다양한 RNN의 변형이 나왔습니다. 이번 챕터에서 배우게 될 LSTM도 그 중 하나입니다. 앞으로의 설명에서 LSTM과 비교하여 RNN을 언급하는 것은 전부 바닐라 RNN을 말합니다. 1. 바닐라 RNN의 한계 앞 챕터에서 바닐라 RNN은 출력 결과가 이전의 계산 결과에 의존한다는 것을 언급한 바 있습니다. 하지만 바닐라 RNN은 비교적 짧은 시퀀스(sequence)에 대해서만 효과를 보이는 단점이 있습니다. 바닐라 RNN의 시점(time s..
[Keras] RNN 구현하기 인자를 사용할 때를 보겠습니다. hidden_size = 은닉 상태의 크기를 정의. 메모리 셀이 다음 시점의 메모리 셀과 출력층으로 보내는 값의 크기(output_dim)와도 동일. RNN의 용량(capacity)을 늘린다고 보면 되며, 중소형 모델의 경우 보통 128, 256, 512, 1024 등의 값을 가진다. timesteps = 입력 시퀀스의 길이(input_length)라고 표현하기도 함. 시점의 수. input_dim = 입력의 크기. RNN 층은 (batch_size, timesteps, input_dim) 크기의 3D 텐서를 입력으로 받습니다. batch_size는 한 번에 학습하는 데이터의 개수를 말합니다. (여기서부터는 텐서의 개념을 반드시 이해해야 하므로 벡터와 행렬 연산 챕터의 텐..
[ML] RNN (Recurrent Neural Network, 순환 신경망) 앞서 배운 신경망들은 전부 은닉층에서 활성화 함수를 지난 값은 오직 출력층 방향으로만 향했습니다. 이와 같은 신경망들을 피드 포워드 신경망(Feed Forward Neural Network)이라고 합니다. 그런데 그렇지 않은 신경망들이 있습니다. RNN(Recurrent Neural Network) 또한 그 중 하나입니다. RNN은 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 갖고있습니다. 이를 그림으로 표현하면 위와 같습니다. x는 입력층의 입력 벡터, y는 출력층의 출력 벡터입니다. 실제로는 편향 b도 입력으로 존재할 수 있지만 앞으로의 그림에서는 생략합니다. RNN에서 은닉층에서 활성화 함수를 통해 결과를 내..
[OD] Mask R-CNN (논문리뷰&재구현) Mask R-CNN 설명 및 정리 이전글 : (논문리뷰) Faster R-CNN 설명 및 정리 Faster R-CNN 설명 및 정리 이전글 : Fast R-CNN 설명 및 정리 Fast R-CNN 설명 및 정리 이전글 : Object Detection, R-CNN 설명 및 정리 Object Detection, R-CNN.. ganghee-lee.tistory.com Mask R-CNN 정리 R-CNN 계열 모델 소개 R-CNN은 CNN에 Region Proposal 을 추가하여 물체가 있을법한 곳을 제안하고, 그 구역에서 object detection을 하는 것이다. R-CNN 계열 모델은 R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CN.. mylifemy..
[OD] YOLO v3 갈아먹는 Object Detection [9] yolo v3 들어가며 이번 시간에 리뷰할 논문은 지난 시간에 이은 yolo v3입니다. yolo v3는 사실 논문이라기 보다는 저자의 표현에 따르면 tech report라고 합니다. 저자인 Redmon이 yolo 모델에 당시에 등장한 기법 yeomko.tistory.com yolo v3는 사실 논문이라기 보다는 저자의 표현에 따르면 tech report라고 합니다. 저자인 Redmon이 yolo 모델에 당시에 등장한 기법들을 적용하여 성능을 향상시킨 모델을 공개하며, 어떻게 구현했는 지를 정리한 보고서 같은 느낌입니다. 먼저 결과부터 보시죠. 해당 피규어는 당시 SOTA 모델이었던 Facebook의 Retinanet 논문에 기재된 피규어를 그대로 따와서 y..
[OD] YOLO v2 갈아먹는 Object Detection [8] yolov2, yolo9000 들어가며 이번에 살펴볼 논문은 1 step Object Detection의 포문을 연 yolo의 후속편 yolo v2입니다. 저자인 Redmon은 상당히 괴짜인데요, 이번 논문의 형식부터 상당히 재미있습니다. 저는 이렇게 첫 장의 yeomko.tistory.com 기존 yolo 모델을 보완하여 정확도를 높인 yolo v2 모델을 제시합니다. 그리고 이 yolo v2 모델을 기반으로 무려 9000 종류의 물체를 구분할 수 있는 yolo 9000 모델을 공개합니다. 이전까지 Object Detection 분야에서 가장 많이 사용되었던 데이터 셋인 coco가 약 80종류의 클래스를 가진 것과 비교하면 가히 파격적입니다. Better ..
[OD] FPN: Feature Pyramid Network 갈아먹는 Object Detection [7] Feature Pyramid Network 들어가며 오늘 살펴볼 논문은 등장할 당시에도 영향력이 엄청났지만 이 후에 등장하는 모델들에 큰 영향을 준 Feature Pyramid Network 입니다. 현재 State of the Art를 기록하고 있는 EfficientDet 모델도 이 yeomko.tistory.com Feature Pyramid Object Detection 분야에서 풀리지 않았던 고질적인 난제는 바로 작은 물체를 탐지해내기가 어렵다는 것입니다. 이를 위해서 이미지나 피쳐맵의 크기를 다양한 형태로 rescale하는 접근 방식이 있어왔습니다. (a)는 입력 이미지 자체를 여러 크기로 resize 한 뒤, 각각의 이미지에서 물체를 탐지하는 기법..
순열 알고리즘 (Permutation Algorithm) 사전순으로 출력되지 않는다는 점을 주의해야겠다. 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2 위와 같이 출력된다. 사전순으로 출력된다면 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 이어야 한다. #include #include #include using namespace std; /* 순열 알고리즘 */ void Permutation(vector& Array, int Start, int End) { if (Start == End) { for (const auto it : Array) { cout
[PyTorch] CNN 설계 11. Transfer Learning 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning new_model = torchvision.models.resnet50(pretrained=True) 다만 우리가 앞서 직접 정의한 모델(SimpleCNN)에서는 입력 이미지의 크기를 120x120로 한 것에 반해, 방금 불러온 ResNet은 입력 이미지 크기를 최소한 ..