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

Programming/C & C++ 27

[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

[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

[C/C++] 9.3강 - 제어문, 조건 관리하기 (for 사용법)

(1) for문이란 특정 조건이 성립하는 동안 계속 반복하는 while을 이용해 같은 코드를 N번 반복하는 코드를 짤 수 있다. 그러나 while이 꼭 그러한 용도로만 사용되는 것은 아니다. 반면 for는 N회 반복에 거의 쓰이는 제어문이라고 할 수 있다. 적어도 N회 반복에 대해서는 while보다 간결하고 읽기도 쉽다. while과 비교하면서 for의 사용법을 확인해보자 (2) for의 사용법 #include int main() { int i; i = 0; //반복문에서는 관례적으로 i를 많이 사용한다. while (i < 10) { printf("i is %d\n", i); i++; } } 위 코드는 printf를 while로 10번 반복하는 코드이다. 이 코드에 주석을 조금 추가해보겠다. #incl..

Programming/C & C++ 2021.08.17

[C/C++] 9.2강 - 제어문, 조건 관리하기 (while 사용법)

(1) while 지난 강좌에서 if에 대해 알아보았다. if는 코드에 조건을 삽입해 그 조건이 성립할 때만 지정된 코드를 실행하는 제어문이었다. while도 if처럼 그 이름에서 기능을 유추할 수 있다. ~하는 동안.. 그렇다. while은 특정 조건이 성립하는 동안 코드를 실행한다. 아래 코드를 보자. #include int main() { int a = 10; while(a > 0) { printf("a is %d\n", a); a--;//감소 연산자를.. 기억해야 한다 } } a의 초기값은 10이다. 그리고 while의 조건을 보니 a \(> \) 0 이라고 한다. 이 말은, a가 0보다 클 동안 코드를 실행한다는 뜻이다. 여기서 실행되는 코드는 두 줄인데, printf로 a의 값을 출력한 후 a..

Programming/C & C++ 2021.08.01 (2)

[C/C++] 9.1강 - 제어문에서 논리 연산자 사용하기 (if의 사용법)

(1) 조건 여러 개 사용하기 #include int main() { int a, b; a = 3, b = 5; if (a == 3) { if (b == 5) { printf("a는 3, b는 5입니다\n"); } } } 저번 강좌에서 이렇게 if문 여러 개를 겹쳐 두 조건을 동시에 만족하는 경우에 코드를 실행할 수 있다고 했다. 하지만 이것보다 더 편리하고 직관적으로 여러 개의 조건을 사용하는 방법이 있는데, 그것이 바로 논리 연산자이다. (2) 논리 연산자란? 논리 연산자란, 연산자 파트에서도 말했지만 다시 말하자면 관계 연산자로 판단한 결과를 다시 논리적으로 비교하는 연산자이다. 그 종류는 아래와 같다. 연산자 용도 &&(AND) 양쪽이 모두 참일 때 참을 반환함 ||(OR) 양쪽 중 하나만이라도 ..

Programming/C & C++ 2021.07.20

'