' 'C' 태그의 글 목록
728x90

C 10

[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++] 10. 포인터 (1)

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

Programming/C & C++ 2022.03.24

[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

윈도우에서 GCC/G++ 설치하기!!

(0) 여담 C나 C++로 프로그램을 개발할 때 Visual Studio를 사용하지 못하는 리눅스 환경에서는 gcc나 clang이라는 컴파일러를 쓰곤 한다. 포스팅의 주제인 GCC에 대해 잠깐 얘기를 하자면 GCC의 의미는 GNU Compiler Collection, 오픈 소스컴파일러 모음이다. 본디 GCC는 C언어만을 위한 컴파일러여서 GNU C Compiler 였지만 다른 언어들도 지원하게 되면서 이름을 바꾸게 되었다. 윈도우에서 GCC를 설치하려면 MinGW라는 프로그램 필요하다. MinGW는 GNU용 소프트웨어 도구 모음인데 윈도우용으로 포팅한 버전이라고 한다. (1) MinGW 설치 https://sourceforge.net/projects/mingw/ MinGW - Minimalist GNU ..

Programming 2021.09.06

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

이 문제는 입력받은 문자열의 단어의 개수를 구하는 문제이다. 문제를 풀기 위해서 해결해야 하는 과제는 두 가지가 있다. 1. 공백도 문자열에 포함해서 입력받기 2. 공백을 제외한 다른 알파벳들의 묶음(단어의 개수) 수 세기 이게 필자의 제출 기록인데 보다시피 실패가 아주 많다..ㅋㅋ 문자열을 그냥 입력받으면 공백으로도 구분된다는 것과 문자열 앞뒤로 공백이 나올 수 있다는 조건을 간과하여 5번이나 틀렸다. 결국 못참고 정답을 찾아봤는데.. ▼구글에서 찾은 정답 보기 #include #include int main() { std::string str; int count = 0; while (std::cin >> str) { ++count; } std::cout = 0 && x - 65 = 0 && x - 97

Programming/C & C++ 2021.09.01

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

백준 문제 1157번 C++풀이이다. 아래 코드는 정답이었지만 너무 길고 복잡한 것 같아서 고수들의 코드를 확인해보려고 했는데.. 소름돋게 똑같은 알고리즘을 써서;; 내가 맞게 잘 한 거구나.. 라는 생각과 함께 여러 풀이들이 변수이름까지 똑같은 걸 보고 다들 정답을 보고 하는 구나;; 라는 생각을 하며.. 힌트와 답을 공유한다. #include #include int main() { std::string str;//문자열 std::cin >> str;//문자열 입력 int count[26] = { 0 };//카운트 for (int i = 0, idx = 0; i < str.length(); i++) { idx = str[i]; if (idx < 97)//대문자면 65를 빼고 idx -= 65; else..

Programming/C & C++ 2021.08.30

[C/C++] Win32 API 첫 예제!

윈도우 API는 윈도우os에서 제공하는 API이다. soen.kr에서 무료로 제공되는 초급 강좌를 정독하며 공부한 내용들을 올릴 것이다. 이 포스팅 시리즈는 '공부 정리'이므로 제3자는 볼 필요없다. 계속 명시하겠지만 웬만해선 모든 출처는 대부분 soen.kr일 것이다. github.com/mdisprgm/Win-API 에 소스가 보관된다. (1) Hello, World! with GUI 콘솔 앱은 Hello World가 가독성을 위해 줄바꿈을 마구마구 해도 10줄내로 끝났지만 윈도우 API는 다르다.. 기본적으로 설정해줄 게 굉장히 많더라. #include //헤더파일 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//실제 작업, 프로시저 HINSTANC..

Programming/C & C++ 2021.08.24
728x90

'