' 'Programming' 카테고리의 글 목록
728x90

Programming 35

[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

[Go] vscode에서 디버깅 중 콘솔에 입력받기

Go를 처음 설치하고 구글링한대로 환경 세팅을 하다보니 디버깅을 `디버그 콘솔`에서 하게 된다. Go문법에도 익숙해질 겸 간단한 콘솔에서 하는 게임을 만드는데 키보드로 입력받기가 힘들어서 일반 터미널에서 디버깅 하는 법을 찾아봤다.. 결론: .vscode\launch.json 을 아래처럼 해주면 된다 { "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "auto", "console": "integratedTerminal", "program": "${workspaceFolder}" } ] } 저기 저 "console"을 integratedTerminal로 해주면 우리가 원..

Programming/Go 2022.07.05

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