프로그래밍/코테 기반 지식 8

[코지] c++ 소수점 표현

개요 c++에서 소수점 아래 표현하는 방법을 알아보겠습니다. 목차 1. 자료형 범위 2. 소수점을 표현할 수 있는 자료형 3. 수의 표현 방법 자료형 범위 구분 자료형 byte 범위 비고 기본형 void – – 문자형 (signed) char 1 byte -128 ~ 127 unsigned char 1 byte 0 ~ 255 wchar_t 2 byte 0 ~ 65,535 정수형 bool 1 byte 0 ~ 1 (signed) short (int) 2 byte -32,768 ~ 32,767 unsigned short (int) 4 byte 0 ~ 65,535 (signed) int 4 byte -2,147,483,648 ~ 2,147,483,647 OS bit 따라다름 unsigned int 4 byte ..

[코지] c++ 숫자 문자 구분

개요 정수를 구분하는 코드 핵심 1. 정수 범위 2. 판별법 std::isdigit 을 사용하여 ASCII의 값이 숫자인지 문자인지 판별 3. 유의 사항 +11 과 -11이 들어와도 처리 가능 해야한다. Code https://github.com/toward-the-best/coding_test/blob/main/unit_test/range_check/number_or_alphabe.cpp GitHub - toward-the-best/coding_test Contribute to toward-the-best/coding_test development by creating an account on GitHub. github.com 연관 코테 https://www.acmicpc.net/problem/1000..

[코지] 수학적 개념 정리

개요. 코테를 위해서 필요한 수학적 개념 정리와 이를 구하는 방법을 C++로 알아보겠습니다. 코테 수학 기초 개념 1. 약수 어떤 수나 식을 나누어 나머지가 없이 떨어지는 수나 식을 일컫는 말. 2. 최대 공약수 최대공약수(GCD)란 두 수 이상의 여러 수의 공약수 중 최대인 수를 가리킵니다. 3. 소수 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다 4. 조합 숫자 배열에서 순서 상관없이 뽑을 수 있는 가지의 수 5. 순열 숫자 배열에서 순서에 따라 뽑을 수 있는 가지의 수 수학 기초 개념 구현 1. 약수 std::vector factor(int value) { int max = value / 2; // 모든 약수는 입력 값을 제외하면 입력값의 절반 이하에서만 나온다. std::vector..

[코지] DFS, BFS 정리

DFS (Depth-First-Search) 1. 사용 시기 그래프 를 순회 할때 사용합니다. 2. 구현 방법 stack 을 사용하여 구현 합니다. stack first-in last-out 3. 동작 순서 1. 시작 할 node를 stack에 집어 넣습니다. 2. stack에 넣은 것 1개를 빼서 출력 3. 뺀것과 열결된 node를 모두 stack에 입력 4. 2, 3번 을 무한 반복 5. stack에 더이상 없으면 프로그램을 종료 DFSR (Depth-First-Search-Recursion) 1. 사용 시기 그래프 를 순회 할때 사용합니다. 2. 구현 방법 재귀 함수를 사용하여 구현 합니다. 3. 동작 순서 1. 시작 할 node를 재귀함수에 넣습니다. 2. 재귀 함수에서 바로 입력 받는 node를..

[코테 준비] 문제별 알아야 할 개념과 함수

홀짝 1. 문제 푸는 원리 숫자를 2로 나눈 몫이 0이면 짝수임을 응용, 단 0은 예외 처리가 필요함. #include #include using namespace std; string solution(int num) { string answer = ""; if (num == 0) answer = "Even"; else if (num % 2 == 0) { answer = "Even"; } else { answer = "Odd"; } return answer; } 문자열 재배치 문제 1. 문제 푸는 원리 string -> vector로 변환 -> vector sorting -> 합치기 2. 사용된 코드 1) std::vector (1) 헤더 #include (2) 함수 push_back() 2) sort ..

Doxygen을 활용한 코드 문서화

Doxygen을 활용한 코드 문서화 Chapter - 1 주석주석의 중요성 큰 프로젝트에서는 소스코드를 분석하는데 있어 주석이 없으면 효율성이 떨어진다.(물론 가독성이 좋고 잘짜여진 소스코드면 주석이 따로 필요없다 ,-.- 이런 코드 단 한번도 못봄...)코드에 대한 빠른 이해를 돕니다.한달이 지난 코드는 새로운 코드 처럼 느껴진다. 유지 보수를 위해서 꼭 필요하다. 주석이 없는 코드는 다른 사람들이 보기가 힘들다.주석의 유의사항 너무 과하게 달지만 말아라.주석은 코드의 이해를 돕는거지 코드를 자세하게 설명하는게 아니다.Chapter - 2 문서화 도구 Doxygen코드 문서화를 위한 도구(doxygen + graphviz)doxygen: 소스코드 문서화 도구지원 언어 C, C++, C#, Objecti..

최고의 코딩을 위하여 지켜야 할 사항.

최적을 코딩을 위하여 지켜야 할 사항. 설계서 부터 작성해라.모듈화를 해라스택을 통한 메모리 접근 신경쓰지 마라 컴파일러가 최적화 다해준다함수는 한가지의 동작만 해야한다. 함수는 모니터 한페이지를 넘으면 안된다.전역 변수 사용하지 마라전역 변수는 컴파일러가 최적화를 못한다.전역변수는 소프트웨어 유지보수에도 않좋다.레지스터에 미리 로딩이 안되는 아키텍쳐가 많아서 로레벨에서도 최적화가 안되니 쓰리마라. GCC 코딩 최적화https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html멀티 쓰레딩시 Task의 starvation을 신경 써라. Task의 우선 순위를 정하는게 좋다.주석은 Doxygen 형태로 달아라그래야 문서화 하기 쉽다. 페이스북 질문 실타래 - 질문 C ..