앞으로 예제와 함께 알고리즘 수업에서 배운 내용들을 요약하여 올릴 것이다.총 올릴 알고리즘 분류는 아래 8가지이다.1. Brute force 2. Divide and conquer 3. Decrease and conquer 4. Transform and conquer 5. Greedy Method 6. Dynamic Programming 7. Backtracking 8. Branch and Bound여기서는 Brute Force에 대해 다룬다.Brute Force란될 때까지 다 해본다는 알고리즘이다. 문제 해결을 위해 모든 경우의 수를 찾을 때까지 반복하는 방법이다. 실패하는 경우는 없으나 컴퓨팅 자원이 다른 알고리즘에 비해서 심각하게 낭비된다. 가장 단순하고 직관적이다. Brute Force 예시Sel..
algorithm
https://www.acmicpc.net/problem/9657 9657번: 돌 게임 3 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net C++로 작성한 백준 문제 9657번 돌 게임 3에 대한 문제 풀이다. 실버 3 문제로 동적계획법이 문제를 푸는데 필요한 주요 지식이다. 문제 설명 문제 돌 게임은 두 명이서 즐기는 재밌는 게임이다. 탁자 위에 돌 N개가 있다. 상근이와 창영이는 턴을 번갈아가면서 돌을 가져가며, 돌은 1개, 3개 또는 4개 가져갈 수 있다. 마지막 돌을 가져가는 사람이 게임을 이기게 된다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 구하는 프로그램을 작성하시오. 게임은 상근이가 먼저 시작한다. 입력 첫째 줄에 N이 주어진..
1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net C++로 작성한 백준 문제 1074번 Z에 대한 문제 풀이다. 분할정복 문제로 수학적 추론이 문제를 푸는데 필요한 주요 지식이다. 문제 설명 문제 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 2..
https://www.acmicpc.net/problem/2615 C++로 작성한 백준 문제 2615번 오목에 대한 문제 풀이다. 그리디 알고리즘 문제로 brute force가 문제를 푸는데 필요한 주요 지식이다. 문제 설명 문제 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호가 붙고 세로줄은 왼쪽에서부터 오른쪽으로 1번, 2번, ... 19번의 번호가 붙는다. 위의 그림에서와 같이 같은 색의 바둑알이 연속적으로 다섯 알을 놓이면 그 색이 이기게 된다. 여기서 연속적이란 가로, 세로 또는 대각선 방향 모두를 뜻한다. 즉, 위의 그림은 검은색이 이긴 경우이..
https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net C++로 작성한 백준 문제 7569번 토마토에 대한 문제 풀이다. 골드 5 문제로 그래프 이론, 그래프 탐색, 너비 우선 탐색이 문제를 푸는데 필요한 주요 지식이다. 문제 설명 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 ..
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net C++로 작성한 백준 문제 7576번 토마토에 대한 문제 풀이다. 골드 5 문제로 그래프 이론, 그래프 탐색, 너비 우선 탐색이 문제를 푸는데 필요한 주요 지식이다. 문제 설명 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있..
https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net C++로 작성한 백준 문제 18110번 solved.ac에 대한 문제 풀이다. 실버 4문제로 수학, 구현, 정렬이 문제를 푸는데 필요한 주요 지식이다. 문제 설명 문제 solved.ac는 Sogang ICPC Team 학회원들의 알고리즘 공부에 도움을 주고자 만든 서비스이다. 지금은 서강대뿐만 아니라 수많은 사람들이 solved.ac의 도움을 받아 알고리즘 공부를 하고..
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net C++로 작성한 백준 문제 1697번 숨바꼭질에 대한 문제 풀이다. 실버 1 문제로 ~이 문제를 푸는데 필요한 주요 지식이다. 문제 설명 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면..