본문 바로가기

Algorithm

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.. 더보기
고과평가 - 난이도(하) 문제 - 고과평가 난이도 - 하The Problem어떤 회사에서는 상반기 하반기 마다 고과 평가를 한다. 이 평가는 맴버십 활동의 중요한 척도 중 하나이기에 정확하게 계산해야 한다. 하지만 손으로 계산 하면 틀릴 가능성이 있어서 이 프로그램을 구현하기로 하였다. 고과 평가 항목은 다음과 같다. A급(15) B급(10) C급(5) D급(3)으로 나누어 져 있고 자신이 등급을 선택하여 입력을 하고 그 등급의 점수의 합을 한다. 그리고 부장님 면담을 통해 재 평가를 받게 되는데 여기서 평가 항목이 정확하지 않을 때 제외 시킨다. 그리고 평가가 끝난 후 자신의 평가 점수를 알 수 있다. Input  첫 번째 줄은 인풋 케이스의 수 ( 0 < n < 50 ) 이다. 두 번째 줄에서는 자신이 입력할 인풋 개수 .. 더보기
[Programming Challenges]동맹 휴업(Hartals) 문제 - 동맹휴업(Hartal) 인기도: B성공율: 높음레벨: 2난이도_하 각 정당을 동맹 휴업지수라는 h라는 양의 정수로 나타낼 수 있다. 이 동맹 휴업지수는 한 동맹 휴업과 다음 동맹 휴업 사이의 기간을 날짜 수로 표시한 값이다.세 개의 정당이 있다고 생각해보자. 그리고 I번째 당의 동맹 휴업 지수를 hi라고 할 때 h1=3, h2=4, h3=8이라고 가정하자. N일(N=14)일 동안의 세 당의 행보를 시뮬레이션하면 다음과 같이 표시할 수 있다. 시뮬레이션은 항상 일요일에 시작하며 금요일이나 토요일에는 동맹 휴업이 없다. 요일1일2월3화4수5목6금7토8일9월10화11수12목13금14토1번정당 X X X X 2번정당 X X X 3번정당 X 동맹휴업 12 34 5 이 결과를 보면 14일 동안 정확하게 다.. 더보기
[Dovelet] 친구수/amicable 1. 문제 프로그램 명: amicable제한시간: 1 초어떤수 A 의 약수(단, 자신은 제외)의 합을 B 라 할 때A 와 B 가 같으면 완전수B 의 약수(자신은 제외)의 합이 다시 A 가 되는 경우를 친구수라 함.친구수가 되는 최초의 수는 220 이다.220 의 약수는 1,2,4,5,10,11,20,22,44,55,110,220 이 중 자신을 제외한 약수의 합은1+2+4+...+110 = 284284 의 약수는 1,2,4,71,142,284 자신을 제외한 약수의 합은1+2+4+71+142 = 220그러므로 220 과 284 는 친구수 이다. 입력 자연수 n ( n 더보기
[C][Algorithm]The logic to get the divisors and the codes in C - Here we go Let's get the divisors of n! 1) Basic - Divide n in i ( i substitutes from 1 to n). If the remainder is 0, the i would be a divisor. 123456789101112#include int main(void){ int i,n; scanf("%d", &n); for(i=1; i 더보기
[C]약수 구하기 1. 약수 구하기 n이 입력값, i는 n과 같거나 작은 정수들 입니다.n에 1~n까지 나누었을때(n÷i) 나머지가 0이면 i는 n의 약수입니다. 12345678910111213141516#include int main(void){ int i,n; scanf("%d", &n); // 입력 값 /* n/i(입력값/입력값보다 작은 수)의 나머지가 0이면 i는 n의 약수다. */ for(i=1; i 더보기