다익스트라 알고리즘이나 여러 최단 거리 알고리즘에서, 초기 거리를 매우 큰 값(INF)으로 초기화해야 할 때가 왕왕 있다. 근데, 어떤 특정 값을 넣어야 할 지에 대해서는 아직 정해진 것이 없다. 사용자 취향에 따라 다음과 같이 정할 수 있다. HTML 삽입 미리보기할 수 없는 소스 그럼, 어떤 것을 사용해야 가장 부작용이 적을까? 한번 알아보도록 하자. 1. INF = INT_MAX 간혹 매우 큰 값으로 int형이 가질 수 있는 가장 큰 값인 $2^{32}-1$을 사용하는 경우가 있다. 이 수를 사용할 때 C / C++의 헤더 혹은 에 매크로로 정의되어 있는 INT_MAX를 활용하면 아주 쉽게 정의할 수 있다. (INT_MAX의 실제 값은 컴파일러 종류에 따라 다르지만, int형이 가질 수 있는 가장 ..
이번 글의 주제는 '팰린드롬 판별'에 관한 이야기이다. 쉬운 주제이지만, 팰린드롬 판별을 구현할 수 있는 방법은 여러 가지이니 이에 대하여 작성해보려 한다. 1. 팰린드롬이란? 팰린드롬(Palindrome, 회문)은 처음부터 끝까지 거꾸로 읽어도 똑같이 읽히는 수 또는 문자열을 의미한다. 예를 들면, "racecar"나 "abcdcba", 한글로 하면 "수박이박수", "다시합창합시다" 정도가 되겠다. 이 팰린드롬을 판별하는 것은 여러 방법이 있지만, 먼저 가장 팰린드롬의 기본에 충실하게 코드를 작성하여 보자. 2. 팰린드롬 판별 1 - Naive 팰린드롬을 판별하려면, 처음 글자부터 마지막 글자까지 거꾸로 셌을 때 같은 수거나 문자열이면 가능하다. 입력이 문자열일 경우 다음과 같이 함수를 작성할 수 있다..
C++에서 많은 사람들이 최솟값, 최댓값을 찾을 때 min, max를 쓸때 다음과 같이 쓰는 모습을 너무나도 많이 봤다. HTML 삽입 미리보기할 수 없는 소스 위에 코드같이 세 개의 값에 대해서만 min, max를 구한다면 그래도 불편을 감수하고 사용할 수 있다. 그런데, 만약 4개, 5개 등등... 굉장히 많은 수들의 최댓값, 최솟값을 비교해야 한다면? 값들이 배열이나 container안에 있으면 함수(max_element / min_element)를 통해 구할 수 있지만, 만약 각각의 값들이 다른 공간안에 담겨있다면 조금 곤란할 수 있다. C++ 11부터는 다음과 같이 min과 max를 구할 수 있다. 네 개의 값 a, b, c, d의 값 중 최솟값과 최댓값을 찾는다고 하면 코드를 이렇게 작성할 수..
2022.04.05 - [PS 갤러리/Tips & Tricks] - [C++] C++의 무적 헤더 는 무엇인가? [C++] C++의 무적 헤더 는 무엇인가? 여러 경쟁적 프로그래밍 대회나 답변들을 보면 가 자주 쓰이는 것을 볼 수 있다. 또한, 나는 주렁주렁 여러 헤더를 달 동안, 옆의 사람은 간단히 하나의 헤더로 끝내는 것을 보면 괜히 부럽기도 0xffffffff.tistory.com 위 글에서 의 단점으로 "느리다"를 꼽았다. 하지만, Pre-compiled 헤더를 사용하면 시간을 단축시킬 수 있다고 하였다. Pre-compiled 헤더를 직접 프로젝트 안에 쓰자. 특히, 알고리즘 문제 해결을 하는 사람들에게는 아주 좋은 꿀팁이라 생각한다. g++를 사용하는 사용자를 기준으로 작성되었다. 1. 헤더 ..
여러 경쟁적 프로그래밍 대회나 답변들을 보면 가 자주 쓰이는 것을 볼 수 있다. 또한, 나는 주렁주렁 여러 헤더를 달 동안, 옆의 사람은 간단히 하나의 헤더로 끝내는 것을 보면 괜히 부럽기도 한다. 대관절 는 무엇을 하는 헤더인가? 1. bits/stdc++.h을 써야 하는 이유 한 마디로 말하면 다음과 같이 말할 수 있다. C++ 문제해결을 여행하는 여행자들을 위한 종합 선물 세트 말 그대로 C++ 알고리즘 관련 코드에서 필요한 자료형들을 모~~~~두 담고 있다고 해도 무관하다. 실제, GCC 4.8.0의 는 다음과 같이 헤더를 담고 있다. 이로 인하여, C++또는 C언어에서 #include , #include , #include ... 과 같이 필요한 자료형 혹은 함수 헤더 노가다를 하지 않아도 된다..
코딩을 하거나 문제를 풀다 보면 우린 배열을 선언하고, 그 안의 초깃값들을 채워 넣어야 할 일들이 많다. 그럴 때, 다음과 같이 for 반복문을 이용하여 아래와 같은 방법으로 배열 초기화를 한다. HTML 삽입 미리보기할 수 없는 소스 그러나, 초기화를 매번 해야 하거나, 배열이 2차원, 3차원이 되면 코드가 불필요하게 길어지거나 가독성이 떨어질 수 있다. 이를 방지하기 위하여, C언어 & C++에서는 두 가지 종류의 배열 초기화 함수를 제공한다. N개의 칸을 차지하는 배열 arr의 값을 0으로 초기화한다고 하면 다음 두 가지 방법으로 채울 수 있다. memset(arr, 0, sizeof(arr)) fill(arr, arr+N, 0) 1. memset (※ https://www.cplusplus.com..
- Total
- Today
- Yesterday
- Network
- MIN
- 사칙연산
- 함수
- docker
- effective async
- BRONZE
- 수학
- CSAPP
- bomblab
- Max
- 제어문
- for
- 프로그래밍
- Python
- 백준
- 문자열
- 구현
- BOJ
- equal
- C++
- Proactor
- 시간복잡도
- GDSC
- 알고리즘
- 헤더
- react
- JS
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |