본문 바로가기

Algorithm/기타

[C/C++](유클리드 호제법)간단한 최대공약수, 최소공배수(GCD,,LCM) 소스 코드 Code Colored By Color Scripter™1234567891011int gcd(int a, int b){ if (b == 0) return a; gcd(b, a%b);} int lcm(int a, int b){ return (a*b) / gcd(a, b);} 더보기
[Algorithm]이차원 배열 회전 시키기 1. Questionn*n의 이차원 배열의 크기가 가로, 세로 1씩 커지며, 이를 90도 회전 시키는 문제다. 이를 응용하여 대칭도 시킬 수 있다.2. CodeColored By Color Scripter™123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include #include #pragma warning(disable:4996) int arr[12][12], tmp[12][12], cnt = 3;void rotate(int des[][12]);int main(){ while (cnt 더보기
[C/C++]버블 정렬(Bubble sort) Code Colored By Color Scripter™123456789101112for (int i = 1; i 더보기
[C/C++]몇 줄 안되는 퀵 정렬(Quick sort) Code Colored By Color Scripter™12345678910111213141516171819#define SWAP(a,b,c) ((c) = (a),(a) = (b),(b) = (c)) void quicksort(int v[], int n) { int i, last;int temp; if (n 더보기
[Programming Challenges]유쾌한 점퍼(Jolly Jumpers) 문제 Programming Challenges Page70를 참고해주세요. PC/UVa ID: 110201/10038인기도: A성공률: 보통레벨: 1 소스 코드 Colored By Color Scripter™123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include int can[3005], inspector[3005], n; int main(){ while (1) { // 초기화 n = 0; for (int i = 0; i 더보기
[Programming Challenges] 월리를 찾아라 - 난이도(하중) [ 문제 ] 글자들로 이루어진 m * n 그리드와 단어 목록이 주어졌을 때 그리드에서 단어를 찾을 수 있는 위치를 구하라. 그리드에서 한 줄로 연결된 글자들만 단어에 매치될 수 있다. 대소문자는 구분하지 않는다. 또한 단어를 매치시킬 때 수평, 수직, 대각선으로 총 여덟 개의 방향으로 매치시킬 수 있다. [ 입 출력 조건 ] 입력 첫 번째 줄에는 케이스의 개수이다. 각 케이스는 한 쌍의 정수 m과 n이 들어있는 행으로 시작되며 이때 m, n은 1 이상 50이하의 10진수 정수다. 그 다음 m개의 행에는 각각 n개씩의 글자가 들어있으며 이 그리드에서 단어를 찾아야 한다. 그리드에 있는 글자는 대문자일 수도 있고 소문자일 수도 있다. 글자들로 이루어진 그리드 다음 줄에는 k라는 정수가 입력된다(1Colore.. 더보기
Tree - 난이도(하) [ 문제 ] 완전 이진 트리를 만들고 레벨 전위 중위 후위 사선에 대한 출력을 할 수 있는 프로그램을 만드시오. [10 9 17 11 23 8 66 21 2 33 51 7 28] 그리고 만들어진 트리를 이용하여 레벨, 전위, 중위, 후위, 사선 출력하시오 레벨 10 9 17 11 23 8 66 21 2 33 51 7 28 전위 10 9 11 21 2 23 33 51 17 8 7 28 66 중위 21 11 2 9 33 23 51 10 7 8 28 17 66 후위 21 2 11 33 51 23 9 7 28 8 66 17 10 사선1 10 9 11 21 사선2 10 17 66 [ 입 출력 조건 ] 입력 첫 줄에는 Case의 수 n( 1< n 더보기
[Programming Challenges] 3n+1 - 난이도(하) [ 문제 ] - 3n+1 어떤 수열을 만들어내는 다음과 같은 알고리즘을 생각해보자. 어떤 정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될 때까지 같은 작업을 계속 반복한다. 예를 들어 n=22이면 다음 과 같은 수열이 만들어 진다. 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 아직 증명되지 않았지만 모든 정수 n에 대해 이 알고리즘을 적용시키면 결국에는 n=1에 이르게 되는 것으로 추측된다. 그리고 이 가설은 적어도 1,000,000까지의 정수에 대해서는 참이다. n이라는 값이 입력되었을 때 1이 나올 때까지 만들어진 수의 개수 (1 포함)을 n의 사이클 길이라고 한다. 위에 수.. 더보기
점수를 이용한 이름 정렬 - 난이도(하) 문제 - 점수 정렬 중간고사 후 시험 성적이 나왔다. 그러나 이름과 성적이 두서없이 섞여있다. 이를 점수가 높은 순으로 정렬한다. Input  첫 번째 줄에는 테스트 케이스의 수 ( 0 < n < 50 )가 입력된다. 두 번째 줄에서는 자신이 입력할 인풋 개수 ( 0 < m < 1000 ) 이다. 이후 m 만큼의 이름과 점수가 입력된다. 이름과 점수 사이는 공백으로 구분된다. Output 점수가 높은 사람 순으로 정렬하여 출력한다. 각 케이스는 ‘Testcase#N’로 구분하게 된다. (여기에서 N은 정수) 입력 출력 22 김영수 999박민지 10004이상준 9장대진 1구미진 5심형민 10 Testcase#0박민지김영수 Testcase#1심형민이상준구미진장대진 How to... 이름과 점수를 .. 더보기
행렬의 곱 - 난이도(하) 행렬의 곱 The Problem행렬의 곱 연산은 2*2 일 때, 쉽지만 그 이상이 가면 수학과 라도 손으로 풀려고 한다면 많은 시간이 걸린다. 그래서 사람들에게 외주를 부탁 하였다. 다음은 행렬의 곱에 대한 식이다.Input  첫 번째 줄에는 테스트 케이스의 수 ( 0 < k 50 )가 입력된다. 두 번째 줄에서는 A의 크기 M과 N이 주어진다. ( 2 < M, N < 100)  그 이후 M과 N 만큼 값이 주어진다. 다음 줄은 A와 같이 B가 주어진다. Output 각 케이스는 ‘Testcase#N’로 구분하게 된다. (여기에서 N은 정수) 결과를 출력한다. 입력 출력 22 223 5030 602 1122 2 23 5030 602 22 11 2 Testcase#1123150Testcase#2.. 더보기