본문 바로가기

전체 글

(282)
클래스의 기본 메소드 6가지 정리 1. 기본 생성자 2. 기본 소멸자 3. 복사 생성자 4. 복사 대입 연산자 5. 이동 생성자 6. 이동 대입 연산자 1. 기본 생성자 객체 생성 시 사용자가 초깃값을 명시하지 않았을 때, 컴파일러가 자동으로 제공하는 생성자. 특정 경우에 자동으로 삭제된다. 1. & 혹은 const 멤버변수가 있을 때 2. 기반 클래스의 기본 생성자가 삭제 됐을 때 3. 기반 클래스가 기본 소멸자가 삭제 됐을 때 4. 멤버 변수의 기본 생성자가 삭제 됐을 때 2. 기본 소멸자 객체의 수명이 끝나면 컴파일러에 의해 자동으로 호출되는 함수. const, volatile, static 으로 선언되 수 없다. 생성자는 여러개 가질 수 있지만 소멸자는 하나만 가질 수 있다. 인자를 가지지 않는다. 특정 경우에 삭제된다. 1. s..
프로그래머스 타겟 넘버 Dfs 사용 시 for 문 안씀 생각. for 문을 쓴다면 모든 경우를 확인할 경우 #include #include #include using namespace std; vector num; vector visited; int tarNum; int DfsSum(int index, int sum) { int ans = 0; if(index == num.size()) { if(sum == tarNum) { return 1; } return 0; } ans += DfsSum(index + 1, sum + num[index]); ans += DfsSum(index + 1, sum - num[index]); return ans; } int solution(vector numbers, int target) { in..
프로그래머스 피로도 탐색에서 다시 돌아온다면 방문을 다시 false 로 만들어주자. 탐색 재귀 시에 그냥 인덱스 쪽에 + 1 만 해주면 되는 경우를 항상 생각하자. 던전의 방문 최대 횟수는 던전의 총 갯수 일 것이기 때문이다. 방문 불가 시 어짜피 다음 던전으로 이동한다. 또 k 의 값을 함수 내에서 변화를 주지 말자. 함수 구현부에서 변화를 주면 해당 반복문 동안 k의 값이 변해있어 문제 풀이가 어렵다. 아래 구문처럼 k를 매개변수로 넣을 때 - 해주자. 그럼 for 문에서 의 k 값에는 변화가 없지만 Dfs 에 재귀 되어질 k 값은 변화가 있다. #include #include using namespace std; vector inDun; vector visited = vector(8, false); int answer..
03 - 2 명령어 2 명령어는 연산 코드와 오퍼랜드로 구성 된다.명려어가 수행할 연산을 연산 코드, 연산에 사용할 데이터나 주소 를 오퍼랜드라고 한다.연산 코드는 연산자, 오퍼랜드는 피연산자라고도 부른다.연산 코드가 담기는 영역을 연산 코드 필드, 오퍼랜드가 담기는 영역을 오퍼랜드 필드라고 한다.기계어와 어셈블리어는 명령어라서 연산 코드와 오퍼랜드로 구성된다.오퍼랜드연산에 사용할 데이터나 데이터의 주소 값이다.대부분의 경우에는 메모리 주소 혹은 레지스터 이름을 담기에 주소 필드라고도 부른다.오퍼랜드는 하나의 명령어 안에 존재하지 않거나 다수 존재할 수 있다.가령 오퍼랜드가 없이 연산 코드만 있다면 >> ( 0 - 주소 명령어 )오퍼랜드가 하나 이면 >> ( 1 - 주소 명령어 ) 가 되는 것이다.연산 코드연산 코드는 말 그대..
03 - 1 명령어 컴퓨터가 이해하는 정보에는 데이터와 명령어가 있다고 했다. 이 중 명령어에 대해 공부한다.모든 소스 코드는 컴퓨터 내부에서 명령어로 변환된다.오늘날 개발자가 사용하는 프로그래밍 언어는 대부분 고급 언어이다. 이는 C, C++, Java, Python 등등 다양하다. 허나, 이러한 고급 언어를 컴퓨터는 이해하지 못한다. 반대로 컴퓨터가 이해할 수 있는 언어는 저수준 언어이다. 그리고 이러한 저수준 언어는 명령어로 이루어져 있다. 그래서 우리가 사용하는 고급 언어로 프로그램이 실행되려면 반드시 저수준 언어인 명령어로 변환되야 한다. 저수준 언어에는 2가지 종류가 있는데, 기계어와 어셈블리어 이다. 기계어기계어란 0과 1의 명령어 비트로 이루어진 언어이다. 다만, 무조건 2진법으로만 표현하는 것은 아니고 16..
프로그래머스 1차 비밀지도 #include #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { vector answer(n); vector translate(n); vector translate2(n); for(int i = 0; i0) { int n = arr1[i] % 2; translate[i] += n + '0'; arr1[i] /= 2; } while(translate[i].length() < n) { translate[i] += '0'; } reverse(translate[i].begin(),translate[i].end()); while(arr2[..
프로그래머스 k진수에서 소수 개수 구하기 #include #include #include #include using namespace std; bool OkPrimeNum(long long num) { if(num
프로그래머스 신고 결과 받기 문제 신고 결과 받기 문제…… 맵이나 vector 를 분명 더 쉽게 했었는데 하다가 도저히 못찾고 노가다로 풀어버렸다. 그런데 다 풀고 나서 생각나버림… vector 를 이중으로 사용하던 map 을 이중으로 사용하던 결국 이것을 second 쪽에 넘버링 해주면 string 도 int 처럼 사용 가능하다… 잊지말자 #include #include #include using namespace std; vector solution(vector id_list, vector report, int k) { vector answer; answer.resize(id_list.size()); vector declared(id_list.size(), vector(id_list.size(),false)); vector rec(i..