' 'Programming/C & C++' 카테고리의 글 목록
728x90

Programming/C & C++ 33

[C/C++] 백준 2903, 중앙 이동 알고리즘. 격자점 풀이

이 문제를 수학적으로 수열로 해석해서 일반항을 구하고 싶었다. 처음 풀이는 가장 작은 단위의 정사각형 하나를 box라고 하면 모든 box에서 정중앙과 밑변, 오른쪽변 중앙 총 세 개의 점을 찍고, 마지막에 테두리를 돌며 점을 찍으면 된다고 생각했다. 그래서 다음과 같은 수열을 정의하고 코드를 작성했다. a1=4 a_n+1 = a_n + 4^(n-1) * 3 + 2^(n-1) * 2 a2=4+5=9 a3=9+16=25 #include #include int solution(int n) { if (n == 0) return 0; int boxes = 1 * std::pow(4, n - 1); int newDots = boxes * 3 + std::pow(2, n - 1) * 2; return newDots ..

Programming/C & C++ 2024.01.26

[C/C++] C++17 `if` statement with initialization. 유용한 if문 조건 편하게 쓰는 법

PowerToys 사용 중 한국어 오타를 발견하고 Github 레포지토리에 이슈를 등록했다. 심심해서 소스코드를 아무거나 열어봤는데 눈에 띄는 부분을 발견했다. if 안에 변수 선언이 들어간 코드를 봤다. 궁금해서 찾아보았더니 저렇게 쓰는 건 원래 가능했고 `;` 으로 초기화식이랑 조건식을 동시에 넣을 수 있는 기능을 C++17에서부터 지원한다고 한다. #include int inputNum() { int n; std::cin >> n; return n; } int main() { if (int n = inputNum(); n > 5) { std::cout

Programming/C & C++ 2024.01.18

[C/C++] 백준 1966번 C/C++ 풀이 (테스트 케이스 제공)

글 맨 아래에 테스트 케이스가 있으니, 정답을 읽기 전에 다시 한 번 도전해보시는 것도 좋습니다! 먼저, 현실에서 해당 작업을 한다면 어떻게 할지 고민해보았습니다. 가장 중요도가 큰 문서가 나올 때까지 문서들을 제치면 될 것이고, 그것을 코드로 구현하려고 했습니다. 하지만 C++에서 배열을 통해 배열의 요소들을 이동 시키는 것은 시간복잡도가 큰 작업으로 성능 저하가 우려되어, 배열의 요소들은 고정시키고, indicator 역할을 하는 변수를 배열의 끝을 만났을 때 처음으로 돌아가는 식으로 구현했습니다. 문서를 인쇄하는 것은, 더 이상 최댓값 탐색에 영향을 끼치지 않게 배열 요소 값을 -1로 변경하는 형태로 구현했습니다. 다음 코드는 머릿속에서 떠올리는 대로 작성한 처음 풀이입니다. 풀이1) #includ..

Programming/C & C++ 2023.07.15

[C/C++] 백준 1159번 C++ 풀이

장황한 문제와 다르게 굉장히 난이도 쉬운 간단한 문제.. 그냥 문자열 몇 개 입력받아서 첫 글자에 사용된 알파벳 수 구하고 5회 이상인 게 있냐 없냐를 따지면 된다. #include int main() { int alphabets[26] = { 0 }; // 알파벳 사용된 횟수 저장 char offset = 'a'; // 소문자 ascii 첫 글자 std::string entries = ""; // 5회 이상 사용된 문자들 entries.reserve(10); int n; std::cin >> n; for (int i = 0; i > str; alphabets[str[0] - offset]++; // 알파벳 카운트 } for (int ..

Programming/C & C++ 2022.10.31

[C/C++] 10. 포인터 (1)

(1) C와 포인터 포인터란, C가 그 진가를 발휘하는 문법이다. C의 가장 큰 특징이자 장점이자 단점은 어셈블리 제외 고급 언어들 중 가장 기계어와 가깝다는 것인데 이는 이론 상 프로그램의 거의 모든 것을 제어할 수 있다는 말이 된다. 다시 말해 개발자에게 주어지는 자유도가 높다는 것인데 개발자에게 자유를 준다는 것은, 곧 (언어, 컴파일러 차원에서) 알아서 해준다는 게 없다는 뜻이다. 이것이 주니어 개발자일수록 단점으로 작용할 수도 있지만 그만큼 low-level에서 필요한 기초 지식들을 익힌다는 것이기 때문에 그런 것들을 자동으로 해주는 라이브러리나, 상위 고급 언어들을 사용할 때 보다 쉽게 익힐 수 있게 된다. (2) 포인터란 본격적으로 포인터에 대해 설명한다. 포인터는 영어로 쓰면 Pointer..

Programming/C & C++ 2022.03.24

[C/C++] Cos Pro 1급 모의고사 - 꽃피우기 풀이

제출 후 채점해서 통과된 코드이다. 주변에 심을 때 "다음 날"의 숫자를 저장하고 다음 날 날짜가 동일한 것만 찾아서 주변을 새로 심는 방식이다. // 다음과 같이 include를 사용할 수 있습니다. #include #include #include using namespace std; int solution(vector garden) { int Row = garden.size(); int Column = garden[0].size(); int days = 1; int zeros = 0; while (1) { int nextDay = days + 1; for (int i = 0; i < Row; ++i) { for (int j = 0; j < Column; ++j) { if (garden[i][j] ==..

Programming/C & C++ 2022.01.28

[C/C++] 9.5강 - for, while에서 break, continue

(1) break switch에서는 break;를 했을 때 해당 case에서 탈출했다. 같은 원리로 while과 for에서 break를 쓰면 해당 반복 루프를 탈출하여 다음 코드를 실행한다. 아주 단적인 예제를 보자. #include int main() { int i = 0; while (1) { printf("%d, ", i++); if (i % 10 == 0) printf("\n"); if (i > 100) break; } } 1~100까지의 수를 출력하는 코드이다. 물론 for를 써도 되지만 break를 써먹기 위해 while을 사용하였다. i가 100보다 커질 때까지 무한 루프를 돌다가 101이 됐을 때 break; 하여 while 루프를 빠져나온다. 물론 for에서도 break;를 사용할 수 있..

Programming/C & C++ 2022.01.17

[C/C++] 9.4강 - switch & break | 제어문, 조건 관리하기

(1) switch switch. 전기 스위치 할 때 그 스위치로 이해해도 될 것 같다. 사실 if가 switch를 완벽히 대체할 수는 있지만 일부 상황에서는 switch가 코드도 짧아지고 가독성이 올라가는 경우가 있기 때문에 알아두면 좋다. (2) if를 사용했을 때 사람의 행동에 대해서 확인하는 예제이다. 지난 포스팅에 쓴 enum도 사용하였다. #include enum Actions { SitDown, StandUp, LayDown }; int main() { enum Actions action = StandUp; if (action == SitDown) { printf("앉았습니다\n"); } else if (action == StandUp) { printf("일어섰습니다\n"); } else i..

Programming/C & C++ 2022.01.15
728x90

'