728x90
반응형

분류 전체보기 121

[Algorithm] priority_queue 비교연산자 구현 (feat. struct compare, 외우기 쉬운 방법)

알고리즘 문제를 풀다보면 priority_queue에 int형이 아닌 pair를 이용하고 struct를 이용할 때가 있어서 내가 원하는 순서대로 priority_queue를 출력하려면 비교연산자를 재정의 해주어야한다. 오늘은 어떻게 priority_queue의 비교연산자를 구현하는지 알아보도록 하자. c++에서 sort 함수를 사용할 때, 사용자가 원하는 순서대로 정렬하고 싶으면 cmp 함수를 따로 만들어서 사용하였다. #include #include bool cmp(int a, int b) { return a < b; } int main() { vector v; v.push_back(1); v.push_back(3); v.push_back(2); sort(v.begin(),v.end(),cmp); } ..

Algorithm 2022.01.21

[LeetCode 142] 142. Linked List Cycle II(feat. 플로이드의 순환찾기 알고리즘)

영어로 문제를 푼다는것은 자신감을 떨어뜨리고 내가 맞게 해석했는지 의문이 든다... 리트코드에 적응하면 조금은 괜찮아질거라 믿으며 글을쓴다. 이 문제는 모르면 못푸는 문제이다. 몰라서 못풀었고 토끼와 거북이 알고리즘이란 것을 알게되어 배움의 의미로 글을 작성한다. 토끼와 거북이 알고리즘이란 토끼와 거북이 알고리즘은 LinkedList에서 순환 루프 여부를 확인하고 순환 루프의 시작 노드를 알아내는 데 사용되는 알고리즘이다. 자세한 증명 과정은 다음과 같다. 코드 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; ..

Algorithm 2022.01.20

[C++] string::to_string 사용하기(feat. int, double, float -> stirng 변환)

알고리즘 문제를 풀다보면 string을 int로 int를 string으로 변환해야하는경우가 생긴다. 오늘은 그중에서 int를 string으로 변환하는 to_string 함수에대해 알아보도록 하겠다. 헤더파일 std::to_string 함수를 사용하려면 헤더 파일을 선언 해주어야 한다. #include 예제 #include #include using namespace std; int main(void) { int Inumber = 20; double Dnumber = 3.0; //int를 string으로 변환 string str = to_string(Inumber); cout

Algorithm 2022.01.02

[C++] string 자르는 2가지 방법(feat. istringstream 이용하기, substr 이용하기)

C++을 사용하다보면 문자열을 자를 때, python과 Java와 다르게 .split()이라는 내장함수가 없기 때문에 다른방법으로 만들어서 사용해야한다. C++에서 간단하게 문자열을 자르는 방법 두가지를 작성하려고 한다. stringstream을 이용해서 자르는 방법 앞선 글에서 기본적인 stringstream에 대해서 알아보았다. 과연 istringstream과 stringstream과의 차이점은 무엇일까?2021.12.31 - [Algorithm] - [C++] stringstream 사용법(feat. stream과 버퍼란 무엇인가?) [C++] stringstream 사용법(feat. stream과 버퍼란 무엇인가?)C++에서 문자열을 공백과 \n 을 기준으로 int형 string형 float형 등..

Algorithm 2021.12.31

[C++] stringstream 사용법(feat. stream과 버퍼란 무엇인가?)

C++에서 문자열을 공백과 \n 을 기준으로 int형 string형 float형 등 다양하게 자를 수 있도록 하는 stringstream이 존재한다. 이것을 어떻게 쓰는지 알아보도록 하자. stringstream을 설명하기 전에 stream은 무엇인지 알아보도록 하겠다.스트림(stream)C++ 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)을 통해 다룬다.스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미한다.즉, 스트림은 운영체제가 입력과 출력을 다루기 위해 가상으로 만들어 준 것으로 중간 역할을 한다.버퍼(buffer)스트림은 내부에 버퍼(buffer)라는 임시 메모리 공간을 가진다.버퍼를 이용하면 프로그램의 입출력을 효율적으로 처리할 ..

Algorithm 2021.12.31

[알고리즘] C++ string::find() 사용법

알고리즘 풀 때, 문자열에 대한 문제가 나오는 경우가 많다. 이때 마다 인터넷을 검색해서 풀 수 없으니 정리를 해보고자 한다. C++ string 변수에서 특정 문자열을 찾을 때, std::string의 find() 함수를 사용한다. 예시1#include #include using namespace std;int main(){ string s = "Enter ui1234 Muzi"; size_t index = s.find("ui1234");//size_t는 unsigned long type printf("%zu\n", index); // zu는 unsigned long에 대한 type specifier //출력 : 6 }위 코드에서 index의 값은 찾고자 하는 문자열의..

Algorithm 2021.12.30

[Algorithm] 백준 2096 내려가기 문제풀이(Feat. 메모리초과, 메모리 계산법)

내 생각 다이나믹 프로그래밍에 점화식은 바로 세울수 있었다. 너무 기쁜나머지 메모리에 대한 에러를 해결하는데 오래걸렸다... 하나가 되면 하나가 안되는 매직. 아이디어는 떠올렸으니 메모리 제한에 대해 계산하는 법을 정리하겠다. 메모리 계산하기 대략적인 메모리 계산법은 다음과 같다. 1MB = 1000KB 1KB = 1000byte 따라서 1MB = 1000000byte이다. 과연 1MB에서 int형 배열은 몇개까지 선언할 수 있을까?? int는 4바이트이기 때문에 1000000/4 = 250000개 선언할 수 있다. 코드 #include #include #include #include #include using namespace std; int dp_max[3],dp_min[3]; int max(int ..

Algorithm 2021.11.12

[VMware] VMware Fusion에 설치된 Ubuntu 디스크 삭제하기

Ubuntu 18.04를 사용중에 있었는데 뭘 잘못 만졌더니 부팅이 제대로 되지 않았다.. 다행히 파일들은 github에 올려놓았고(아마도...?) 그냥 ubuntu를 새로 다운받기로 결심했다. 삭제 방법 삭제하는 법은 매우 간단했다. VMware의 Window 메뉴 > Virtual Machine Library를 클릭한다. 가상머신에 다운로드된 여러 디스크들이 있을텐데, 삭제하고 싶은 것을 마우스 우측클릭 후에 Delete를 누른다. 다음과 같은 알림창이 뜰텐데 Move to Trash를 누르면 Ubuntu와 그 파일들이 모두 날라가게 된다.

카테고리 없음 2021.10.18

[Javascript] spread와 rest 문법 사용하기 (feat. ...문법)

spread와 rest는 서로 생김새는 비슷하게 생겼지만 다르게 사용된다. spread spread 문법은 새로운 객체 혹은 배열에 이전에 만들어 놓은 공통 부분을 추가하려고 할때 많이 사용한다. 예를 들어서 다음과 같은 객체들이 있다고 가정해봅시다. const countryA = { name1: '한국' }; const countryB = { name1: '한국', name2: '일본' }; const countryC = { name1: '한국', name2: '일본', name3: '중국'}; 이 코드에는 countryA라는 객체를 선언하고 나머지 객체는 기존에 선언한 것을 추가로 선언한 것이다. 즉 기존의 것은 수정하지 않고 새로운 객체를 만드는데 이전의 만들어진 객체와 똑같은 내용이 들어가 있다는..

카테고리 없음 2021.10.17

[Javascript] destructuring( 구조분해할당 ) 사용법 (feat. object, array)

destructuring 은 array나 object에서 값(value)과 프로퍼티(property) 를 분해하여 새로운 변수에 담을 수 있게 해준다. Array 에서의 구조 분해 할당 기본형태 다음과 같이 할당받을 변수를 왼쪽에, 분해할 대상을 오른쪽에 해서 대입하는 형식으로 작성하면 된다. 배열 [1, 2] 이 destructuring 되어 각각 num1, num2 변수에 할당되었다. let [num1, num2] = [1, 2]; console.log(num1); 출력 : 1 이전에 선언된 배열에서 destructuring하는것도 가능하다. let arr = [-1, 0, 1]; let [negative, zero, positive] = arr; console.log(zero); 출력 : 0 de..

카테고리 없음 2021.10.13
728x90
반응형