[C++] NULL vs nullptr, 포인터에서 nullptr을 사용해야 하는 이유
·
programming/개념 정리
🤔 C++ 11에 추가된 nullptr과 NULL은 어떻게 다를까?결론 : 간단히 말하면 NULL은 정수타입의 0, nullptr은 가르키는 것이 없는 포인터 타입이다. `NULL`NULL은 포인터일까? 답은 아니다. NULL은 전처리단계에서  0 으로 치환되는 #define 지시어일 뿐이다. 일종의 매크로로 정수 0일 뿐이다.   💭 여기서 이것이 무엇이 문제인지 생각해보자. NULL이 정수 0인게 왜? 따라갈 포인터도없으니 댕글링 현상도 없고 괜찮지 않을까?  ✔️ 함수 오버로딩에서 NULL을 사용하면, 정수와 포인터를 구분하지 못해 혼란을 일으킬 수 있다. `nullptr` 그래서 nulptr이라는게 생겼다. nullptr는 C++11에서 도입된 키워드로, 포인터 타입을 명확하게 나타낸다. nu..
[C++] #define과 const 그리고 constexpr
·
programming/개념 정리
코드를 보다보면 세가지가 잘 쓰이는데 정확한 차이가 무엇인가 확실히 짚기 위해 쓴다 ✅ 결론 : 컴파일 타임에 타입까지 확인하는 constexpr를 쓰는 것을 권장한다.   `#define`전처리기 지시어: 컴파일 전에 코드에서 사용됩니다.매크로 정의: 단순한 텍스트 치환으로, 타입이 없고, 컴파일 타임 검사가 없습니다.#define PI 3.14  `const`변수 선언: 변수를 상수로 선언하여 값을 변경할 수 없다.타입 지정: 타입이 있으며, 컴파일 타임과 런타임에서 사용될 수 있다. const double pi = 3.14;  `constexpr`컴파일 타임 상수: 컴파일 타임에 값을 계산할 수 있는 상수를 정의한다. 타입 지정: const와 비슷하지만, 반드시 컴파일 타임에 평가될 수 있는 표현식..
[SWEA/D3] 1230. [S/W 문제해결 기본] 8일차 - 암호문3
·
problem solving/SWEA
🔗 문제SW Expert Academy SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com  🖍 풀이양방향 리스트를 지원하는 컨테이너 list 를 활용해서 풀어도 된다. 기존 암호문: list의 뒤에 데이터를 연달아 삽입한다.새 암호문: list는 임의 위치 엑세스가 불가하다는 특징이 있다. 그래서 string이나 vector처럼 container[i+x]가 불가능하다. 대신 반복자 iter를 사용해주었다. list의 begin()부터 x번 반복자를 이동시켜야 삽입할 위치를 iter에 저장한다. 그리고 나서 insert(삽입 위치, 데이터)하여 새 암호문을 넣어준다.이 때, 명령문마다 삽입할 위치 (x)가 다르므로..
[SWEA/D3] 10726 이진수 표현
·
problem solving/SWEA
🔗 문제SW Expert Academy SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com ✏️ 풀이문제에서 대놓고 비트마스크라고 힌트를 주어서 어렵지 않은 문제지만 생각해보지 못한 풀이 방법을 배워서 풀이를 남긴다. 일단 문제를 읽자. (위 사이트 참고) M이 최대 10^8승 (1억)이므로 배열로 순회하면 C++ 기준 1000ms 이내에 제출해야 하는데 바로 시간초과행이다 🙂그에 비해 N은 최대 30이므로 절대 시간초과가 안 걸릴 줄 알았는데 시간초과에 걸렸다.테스트케이스가 1만개 중에 9883개를 맞추길래 부랴부랴 FAST IO를 적용해서 맞출 수 있었다. FAST IO를 습관화 하자.1000ms를 못 넘겨서 ..
[C++] 백준 1236번: 성 지키기 (비트 마스크)
·
problem solving/백준
🔗 문제https://www.acmicpc.net/problem/1236  ✏️ 풀이풀이는 간단하다.각 행과 열에서 X 경비원이 없는 곳의 개수를 세면 된다.그리고 그 개수 중 큰 것이 답이 된다.  예제 2를 보자. 정답은 3이다.행에서는 X가 없는 곳이 3 줄열에서는 X가 없는 곳이 1 줄5 8....XXXX........XX.X.XX................. 배열로 확인하면 되지만 비트마스킹으로 푼 것에 의의를 두었다.안 쓰면 까먹게 되는 지식들.. 다시 한 번 정리하며 풀이 소스를 올린다. 비트 설정 (set)int number = 0b0000; // 초기 값int mask = 0b0001; // 1을 설정할 마스크number |= mask; // number는 이제 0001 ..