[문제 19] 다음에 나오는 규칙은 ‘하노이의 탑’의 규칙이다 ‘하노이의 탑’을 풀 수 있는 프로그램을 작성하시오.
[규칙]
a, b, c라는 3개의 봉이 있다.
a의 봉에 도넛형 원반이 n장 끼워져 있다.(위쪽이 직경이 짧다).
이 원반을 모두 b봉으로 옮긴다.
단 원반은 한 번에 1장씩만 이동한다.
큰 원반은 작은 원반 위에 올려놓아서는 안된다.
[알고리즘 해설]
① 봉 a에서 n - 1개의 원반을 봉 c로 옮긴다.
② 봉 a에서 1개의 원반을 봉 b로 옮긴다.
③ 봉 c에서 n - 1개의 원반을 봉 b로 옮긴다.
[문제 20] 0 ~ 4 사이의 난수 20개를 발생시켜 0, 1, 2, 3, 4가 몇 개씩 발생하였는가를 출력하는 프로그램을 작성하시오.
[참고 자료]
void srand(unsigned int seed); // Sets a random starting point. seed : Seed for random-number generation int rand( void ); // range : 0 ~ RAND_MAX (0x7fff ⇒ 32767) |
[문제 21] 점수를 높은 순으로 순위를 부여하는 프로그램을 작성하시오.(단, 같은 점수는 동일 순위를 부여한다. 그리고 대상자료가 내림차순으로 정렬되어 있을 것을 전제로 한다.)
[입력 데이터]
95, 95, 90, 85, 85, 80, 75, 70, 60, 60 |
[문제 22] 1에서 100까지 숫자 중 3의 배수를 제외한 숫자들의 합을 구하는 프로그램을 작성하시오.
[문제 23] 2차원 배열의 가로, 세로의 합
아래의 데이터를 input.dat 파일에서 읽어들여 출력 예시와 같이 가로, 세로의 합계를 구하여 표시하는 프로그램을 작성하라. (단, 첫 줄에 있는 데이터는 배열의 크기 행과 열의 크기를 나타내며 10이하의 정수이다.)
▸입력 형식 (input.dat) |
▸출력 형식 |
6 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
1 2 3 4 5 15 6 7 8 9 10 40 11 12 13 14 15 65 16 17 18 19 20 90 21 22 23 24 25 115 26 27 28 29 30 140 81 87 93 99 105 465 |
[문제 24] 정렬(sorting)
임의의 정수 10개를 입력받아서 오름차순으로 정렬하여 출력하는 프로그램을 작성하라.
[입․출력 예시]
정수 10개를 입력하시오: 73 65 52 24 83 17 35 96 41 9
결과: 9 17 24 35 41 52 65 73 83 96
[문제 25] 소수(素數)
소수란 1과 자기 자신으로 밖에 나눌 수 없는 정수를 말한다. 입력받은 범위까지의 소수를 출력하는 프로그램을 작성하라.
단, 입력하는 정수의 범위는 2 ~ 200으로 가정한다.
[입․출력 예시]
정수를 입력하세요(2 - 200) : 13
2 3 5 7 11 13
[문제 26] 계승(階乘, factorial) 구하기
자연수 n을 입력받아서 n의 계승을 구하는 프로그램을 작성하시오. 단, 계승의 계산은 재귀 함수(recursive function)로 작성한다.
[입․출력 예시]
자연수(n)을 입력하시오: 5
5!의 값은 120입니다.
[알고리즘 해설]