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

Programming/C & C++ 31

[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

[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
728x90
'