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

Programming 37

[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

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

'