본문 바로가기

컴퓨터/백준 알고리즘

(177)
백준 알고리즘 1914번: 하노이 탑 [C++] 문제 출처: www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 1. 코드 (실행) 2. 풀이 우선 하노이 탑에 대한 알고리즘에 대해 설명하겠다. 하노이 탑의 알고리즘은 재귀 함수를 이용하여 풀었는데 재귀 함수에 대해 너무 어렵게 접근할 필요가 없고, 실행 순서에 대해 정확히 알려고 하지 않아도 된다. 본질에 집중해야 한다. 우선 하노이 탑이 움직이게 되는 조건들을 살펴보자. 그림 - 4에서 7단계를 보면 제일 마지막 원판이 남았을 때는 기둥 1에서 기둥 3으로 ..
백준 알고리즘 10172번: 개 [C++] 1. 문제 문제 출처: www.acmicpc.net/problem/10172
백준 알고리즘 2751번: 수 정렬하기 2 C언어 합병 정렬(merge sort) 문제 출처: https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 코드 #include void merge(int a[], int low, int mid, int hight) //분리된 배열 정렬 및 병합 함수 { int b[1000000]; int i = low; //왼쪽 시작 int j = mid + 1; //오른쪽 시작 int k = 0; //배열 b의 인덱스 값 while(i
백준 알고리즘 2750번: 수 정렬하기 C언어(버블 정렬) 문제 출처: www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 코드 #include #include int main(void) { int * arr; int len, temp, i, j; scanf("%d", &len); arr = (int*) calloc(len, sizeof(int)); for(i = 0; i 0; i--) { for (j = 0; j arr[j + 1]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = ..
백준 알고리즘 2750번: 수 정렬하기 C언어 문제 출처: www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 1. 코드 #include #include int main(void) { int * arr; int len, temp, i, j; scanf("%d", &len); arr = (int*) calloc(len, sizeof(int)); for(i = 0; i < len; i++) scanf("%d", &arr[i]); for(i = 0; i < len; i++) for(j = i + 1; j arr[j])..
백준 알고리즘 1001번 : A-B Java[자바] 문제 출처: https://www.acmicpc.net/problem/1001 1001번: A-B 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 코드 import java.util.Scanner; class Main { public static void main(String [] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); System.out.println(A - B); } } (실행) Ideone.com Ideone is something more than a pastebin; it's an online compiler and..
백준 알고리즘 7568번: 덩치 C언어 문제 출처: https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56,177), (45,165) 라고 한다면 A의 덩치가 B보다 큰 www.acmicpc.net 1. 코드 #include int main(void) { int N, i, j, cnt; int arr[50][2]; scanf(..
백준 알고리즘 1000번: A+B Java[자바] 문제 출처: https://www.acmicpc.net/problem/1000 1000번: A+B 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 복사 1 2 예제 출력 1 복사 3 힌트 여기를 누르면 1000번 예제 소스를 볼 수 있습니다.... www.acmicpc.net 1. 코드 import java.util.Scanner; class Main { public static void main(String [] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.ne..