Computer Science
(C++) 백준 2960번 [에라토스테네스의 체]
안녕하세요 평범한 컴공생입니다. 오늘은 백준 2960번 에라토스테네스의 체 문제 알고리즘 포스팅을 해보겠습니다. 1. 문제 해결 방법 구상하기 - N과 K의 값을 먼저 입력받는다. - 2부터 시작해서 3, 4, 5 ... 와 같이 1씩 값을 올려주며 그 수의 배수인 값을 지워주어야한다. - 단, 2, 4, 6, ... 과 같이 2의 배수를 지웠는데 3, 6, 9 ,... 처럼 6이 중복이 된다면 6을 또 지워줄 수 없다. - 그러므로 그 수를 지우기 전에 앞에서 지웠는지 확인을 해주어야 한다. - 확인했는데 앞에 그 수가 없다면 지워준다. 2. 구상한 아이디어를 바탕으로 코딩하기 #include int main() { using namespace std; int num[1000] = { 0, }; // ..
(C++) 백준 2231번 [분해합]
안녕하세요 평범한 컴공생입니다. 오늘은 백준 2231번 문제 [분해합] 알고리즘 포스팅을 해보도록 하겠습니다. 브루트포스 문제이며 쉬운 난이도에 속합니다. 1. 문제 해결 방법 구상하기 - 먼저 N의 값을 입력받는다. - 메모리 제한이 넉넉하므로 완전탐색을 하면 될 듯하다. - 1부터 N-1 까지의 모든 수를 분해합하여 N과 같은가 비교하면 될듯하다. - 가장 작은 생성자를 구하면 되므로 반복문을 돌리다 생성자를 찾았을 경우 반복문을 탈출하여주면 최솟값만 구할 수 있다. - cout해줄 변수의 값에 0을 초기화해주고 값이 나올 경우 변수의 값에 대입을 해주면 될 듯하다. 못 찾았을 경우 그대로 0이 출력되기 때문이다. 2. 구상한 아이디어를 바탕으로 코딩하기 #include int main() { usi..
(C++) 백준 2798번 [블랙잭]
안녕하세요 평범한컴공생입니다. 오늘은 백준 2798번 블랙잭 문제 알고리즘 포스팅을 해보겠습니다. 전형적인 브루트포스(완전탐색)문제로 모든 경우의 수를 탐색해주어 문제에서 원하는 값을 구해주면 됩니다. 1. 문제 해결 방법 구상하기 - 먼저 N과 M을 입력받고 N번만큼 반복문을 돌려 카드의 값들을 입력받는다. - M에 최대한 가까운 카드? >> 최솟값을 저장하는 변수 min 을 선언하고 각 조합마다 비교하여 더 작을 시 min에 대입하여준다. - 3장의 카드이므로 반복문을 3중으로 설계해서 돌리면 모든 조합의 수를 탐색할 수 있다. 2. 구상한 아이디어를 바탕으로 코딩하기 #include int main() { using namespace std; int N, M; cin >> N >> M; int ca..
(C++) 백준 1475번 [방 번호]
알고리즘 첫 게시물..! 이전부터 백준에서 문제를 풀어오긴 했지만 내가 문제를 해결할 때의 생각흐름과 이유 등을 글로 풀면 좀 더 논리적이고 체계적인 공부가 될 것 같아 알고리즘 문제도 포스팅을 해보려고 한다. 1. 문제 해결 방법 구상하기 - 일단 입력을 받을 때 배열로 입력을 받아야 한다. - 입력 받은 배열(즉 방번호)을 각 자리마다 어떤 숫자를 썼는 지 확인 후 그 숫자에 해당하는 int형 배열의 값을 +1 해준다.(크기가 10인 int 형 배열을 만들어 0~9 중 사용된 숫자의 배열에 +1해주기) - 이 문제에서 가장 핵심이 되는 아이디어이다. 이것 때문에 처음에는 정말 복잡하게 문제를 구상하고 풀이했는데 다시 생각해보니 9와 6을 한 숫자로 생각해주면 된다는 것이 이 문제의 핵심이다. 2. 구..
(C++) 열거형(enumerated types)
열거형이란? 열거형은 C++가 제공하는 기본 자료형이 아니라 프로그래머들이 따로 만든 사용자 정의 자료형이다. 열거형은 enum 을 통해 정의된다. enum Color { /* 여기부터는 열거자(enumerator)가 들어간다. 열거자는 세미콜론(;)이 아니라 쉼표(,)로 구분한다. */ COLOR_BLACK, COLOR_WHITE, COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_YELLOW, COLOR_SKYBLUE, }; // 열거형 정의시에는 반드시 블록뒤에 세미콜론(;)을 붙여줘야한다. //열거형 Color 사용 Color paint = COLOR_WHITE; Color school(COLOR_GREEN); Color banana { COLOR_YELLOW }; 위의 ..
전역변수 앞에서의 extern 과 static
1) 전역변수 앞에서의 extern 변수 다른 c 혹은 c++ 파일과의 링킹을 할 때 종종 사용되곤 한다. // main.c #include extern void f(); extern int g_value; int main(void) { printf("%d\n", g_value); return 0; } 위는 main.c 이다. // sub.c #include int g_value; void f() { g_value = 1; } 위는 sub.c 이다. 이와 같이 main.c에서 extern int g_value; 와 같이 선언을 해주었는데 sub.c 에서 즉 외부변수를 가져와 사용하겠다는 것이다. 이때 main.c 에서 extern int g_value; 라고 하지 않고 그냥 int g_value; 라고 ..