[컴퓨팅과 문제해결]

12378 과 3054 의 최대공약수는?


① 4
② 6
③ 12
④ 14
⑤ 18

의견 (1개)

동네의 어려운 아이들에게 매주 조금씩 용돈을 나눠주는 것을 즐기는 마음씨 좋은 할아버지가 있었다. 하루는 이 할아버지가 다음 주에 네 명이 더 오게 된다면 용돈을 천원씩 덜 줄 수 밖에 없겠구나 라고 얘기했다. 그랬더니 다음 주에는 더 어려운 친구들에게 용돈을 주라며 그 지난주 보다 다섯 명이 덜 오게 되었다. 그래서 모인 아이들은 이천원씩을 더 받아가게 되었다. 한 명이 받아간 돈은? 단, 할아버지가 매주 아이들에게 나누어 주는 용돈의 총합은 같다.


① 4 천원
② 5 천원
③ 6 천원
④ 7 천원
⑤ 8 천원

의견 (2개)

어떤 사람이 바람 방향으로 자전거를 타고 1 km를 가는데 3분이 걸렸다. 바람의 세기가 동일한 상태에서 돌아오는 길은 4분이 걸렸다면, 바람이 불지 않을 때는 1 km를 가는데 얼마나 걸릴까? 단, 자전거 페달을 밟는 힘은 항상 일정하다. 


① 약 3분 20초
② 약 3분 25초
③ 약 3분 30초
④ 약 3분 35초
⑤ 약 3분 40초

의견 (3개)

한 라디오 방송국에서 작년에 방송한 노래들을 분석하기 위해 노래가 방송될 때 마다 아래의 데이터를 수집하여 한줄로 “방송노래” 목록을 만들어 저장하였다.

아티스트, 노래제목, 앨범타이틀, 장르

위에서 제시된 4개의 항목이 모두 동일할 경우에만 동일한 노래이고, 하나라도 다른 경우에는 다른 노래로 간주한다. 또한 위의 4개의 항목 이외에는 고려하지 않는다.

담당자는 재즈 장르에서 서로 다른 노래가 몇 번 재생되었는지 찾아보기 위해 아래의 3개의 알고리즘을 생각하였다. 담당자가 원하는 재즈 장르에서 서로 다른 노래가 몇 번 재생되었는지 알아보기 위해서 꼭 필요한 알고리즘만을 선택한 것은?

알고리즘 1 : “방송노래” 목록 중에서 재즈 장르인 노래 목록을 새로 만들고, 새로운 목록을 노래 제목을 기준으로 사전 순(가나다라 순)으로 정렬한다. Counter를 0으로 설정하고, 새로운 목록에 있는 모든 노래에 대하여, 만약 한 노래가 그 전 노래와 다르다면 (혹은 그 노래가 리스트의 첫 번째에 있는 노래일 경우), Counter를 1씩 증가시키는 과정을 반복한다.

알고리즘 2 : “방송노래” 목록 중에서 재즈 장르인 노래 목록을 새로 만들고, 새로운 목록을 노래제목, 아티스트, 앨범타이틀을 기준으로 사전 순(가나다라 순)으로 정렬한다. Counter를 0으로 설정하고, 새로운 목록에 있는 모든 노래에 대하여, 만약 한 노래가 그 전 노래와 다르다면 (혹은 그 노래가 리스트의 첫 번째에 있는 노래일 경우), Counter를 1씩 증가시키는 과정을 반복한다.

알고리즘 3 : “방송노래” 목록에서 노래 제목의 가나다라 순으로 정렬된 새로운 목록을 만든다. 새로운 목록에 있는 노래에 대하여, 한 노래가 새로운 목록에 있는 노래들 중에서 동일한 것이 있다면, 한 노래는 유지하고 중복된 노래들을 리스트에서 삭제하는 과정을 반복한다. Counter를 0으로 설정하고 남아있는 새로운 목록에 대해 장르가 재즈일 경우 Counter를 1씩 증가시키는 과정을 반복한다.


① 알고리즘 1
② 알고리즘 2
③ 알고리즘 3
④ 알고리즘 1, 알고리즘 2
⑤ 알고리즘 2, 알고리즘 3

비슷한 크기를 가져서 무게를 알 수 없는 4개의 동전이 있다. 한 번에 동전 두 개의 무게만을 비교할 수 있는 양팔저울이 있다고 가정할 때, 2번째 무거운 동전을 결정하기 위해서는 최소한 몇 번을 비교해야 하는가?


① 3번
② 4번
③ 5번
④ 6번
⑤ 7번

어떤 나라에 10개의 도시가 있고 각 도시에는 도시를 대표하는 시장이 거주하고 있다. 이 도시들은 아래 그림처럼 도로로 연결되어 있으며 도로위의 숫자는 도로를 지나가는데 필요한 이동 시간을 나타낸다. 예를 들어, 도시 A에서 출발하여 도시 B를 거처 도시 C로 이동하는 데는 총 5시간이 걸린다. 이 나라는 중요한 결정 사항이 생기면 모든 도시의 시장이 한 도시에서 모여 회의를 가진 후 결론을 낸다고 한다. 

모든 시장의 이동 시간을 더한 총합을 최소로 하고자 한다면 어느 도시에서 모여야 하겠는가? 


① B
② C
③ D
④ E
⑤ H

어떤 나라에 10개의 도시가 있고 각 도시에는 도시를 대표하는 시장이 거주하고 있다. 이 도시들은 아래 그림처럼 도로로 연결되어 있으며 도로위의 숫자는 도로를 지나가는데 필요한 이동 시간을 나타낸다. 예를 들어, 도시 A에서 출발하여 도시 B를 거처 도시 C로 이동하는 데는 총 5시간이 걸린다. 이 나라는 중요한 결정 사항이 생기면 모든 도시의 시장이 한 도시에서 모여 회의를 가진 후 결론을 낸다고 한다. 

긴급한 안건이 발생하여 가장 빠른 시간 내에 모든 시장이 참석하는 회의를 개최하고자 한다. 어느 도시에서 모여야 하겠는가?


① B
② C
③ D
④ E
⑤ H

한 컴퓨터회사의 구성원은 사장 1명과 직원들로 구성되어 있고, 회사의 각 직원은 최대 3명까지의 부하직원을 둘 수 있다. {X, Y, Null}의 표현은 두 명의 부하직원 X와 Y가 있으며, 없는 경우는 Null로 나타낸다. 또한 부하직원이 하나도 없으면 {Null, Null, Null}로 나타낸다. 만일 그 컴퓨터회사 모든 직원의 조직도에서 Null의 총 개수가 10인 경우, 최소 직원 수는 몇 명인가? 단, 사장의 직속상관(바로위의 상관)은 없고, 직원들의 직속상관은 1명이다.


① 2
② 3
③ 4
④ 5
⑤ 6

의견 (4개)

한 컴퓨터회사의 웹사이트에서 사용자의 암호를 5자리로 만들려고 한다. 영문자 26개와 0부터 9까지의 숫자만을 사용할 때, 다음 중 서로 다른 암호를 가장 많이 생성할 수 있는 방법은?

  1. 영문자를 연속적으로 허용하지 않는 경우
  2. 숫자를 연속적으로 허용하지 않는 경우
  3. 같은 숫자 또는 같은 영문자를 연속적으로 허용하지 않는 경우
  4. 마지막 2자리는 숫자만이 나오게 하는 경우
  5. 처음 2자리를 영문자만이 나오게 하는 경우

① 1번
② 2번
③ 3번
④ 4번
⑤ 5번

의견 (1개)

한 상가건물에 화재가 발생하여 재난구조로봇을 투입하여 화재현장을 살피려고 한다. 그 건물에 12개의 상가(●)와 통로(선)가 아래와 같이 배치되어 있으며, 재난구조로봇은 통로를 따라서만 이동할 수 있다고 한다. 상가 사이의 통로 길이는 10m라고 할 때, 재난구조로봇이 임의의 한 상가에서 출발하여 다른 모든 상가를 확인 후 다시 처음 출발한 상가로 돌아와야 한다고 가정한다면 최소한의 이동거리는 얼마인가?


① 110m
② 120m
③ 130m
④ 140m
⑤ 150m

한 상점에서 고객에게 판매한 품목은 다음과 같다.

거래번호  판매항목
1 식빵, 우유 
2 식빵, 우유, 껌
3 껌, 젤리  
4 우유, 젤리
5 식빵, 젤리
6 우유, 껌

상점 주인은 위의 거래실적을 바탕으로, 동시에 가장 잘 팔릴 가능성이 높은 두 개의 상품을 선택하고자 한다. 상점 주인이 선택할 우선순위가 가장 높은 두 상품은?


① 식빵, 우유
② 식빵, 껌
③ 식빵, 젤리
④ 우유, 젤리
⑤ 껌, 젤리

의견 (2개)

다음과 같이 동작하는 기계를 생각하자. 기계는 모두 세 가지 상태(P,Q,R)를 가진다. 기계는 처음에 P상태에서 시작한다. 기계는 두 개의 버튼(A,B)을 가지고 있고, 버튼을 한번 누를 때마다 기계상태가 다음의 규칙에 따라 변화한다.

현재 기계상태 버튼 다음 기계상태
P A P
P B Q
Q A R
Q B Q
R A P
R B Q

사용자는 버튼을 총 10번 누르고, 마지막 기계 상태가 R이 되면 “성공”이란 메시지를 출력하고, 다른 상태에서는 “실패”를 출력한다. 다음과 같이 버튼을 눌러서 기계를 조작할 때 “성공”을 출력하는 경우는?


① AAAAAAAAAA
② ABAABBAAAA
③ BABBBBABAB
④ BAAAABAABA
⑤ BBBBBBBBBB

한 자동차회사에서 개발한 하이브리드 자동차는 휘발유와 전기배터리로 갈 수 있으며, 전기배터리는 휘발유가 다 떨어졌을 때 사용된다고 한다. 이 자동차의 휘발유 탱크용량은 60리터이며, 전기배터리 최대용량은 500,000 암페어라고 한다. 또한, 이 자동차는 휘발유 1리터로 최대 15km를 갈 수 있으며, 10,000 암페어로 최대 1km를 갈 수 있다고 한다. 휘발유로 달릴 때 10km당 5,000 암페어씩 충전된다고 가정할 때, 처음에 휘발유를 가득 싣고 달릴 수 있는 최대 거리는 얼마인가? 단, 처음 출발할 때 배터리가 방전상태라고 가정한다. 


① 945km
② 950km
③ 955km
④ 960km
⑤ 965km

다음의 프로그램은 로봇(▲)을 목적지(※)까지 도착시키는 프로그램이다. 다음 프로그램을 실행시키면, 목적지에 도달하지 못하는 경우는?

<프로그램>
시작
로봇이 목적지에 도착할 때까지 반복 수행 {
  벽에 닿을 때까지 앞으로 이동
  벽에 닿았다면, 오른쪽으로 회전
}
끝



왼쪽 괄호 “(” 와 오른쪽 괄호 “)” 로 만들어진 문자열이 있다. 올바른 괄호 짝이란 (()) 나 ()() 같이 올바르게 닫힌 괄호 문자열을 의미한다. )( 나 ())( 와 같은 문자열은 올바른 괄호 짝이 아니다. 왼쪽 괄호와 오른쪽 괄호가 각각 3개 있는 경우는 아래와 같이 모두 5종류가 있다.

()()(), ()(()), (()()), (())(), ((())) 

왼쪽과 오른쪽 괄호 각각 4개로 만들 수 있는 모든 문자열에서 올바른 괄호 짝이 아닌 문자열은 모두 몇 개인가?


① 51
② 52
③ 53
④ 54
⑤ 55

의견 (2개)

[알고리즘과 프로그래밍]

C언어 프로그램 !(3 > 2) 의 결과는 무엇인가?


① -1
② 0
③ 1
④ 2
⑤ 3

의견 (1개)

다음 프로그램의 출력 결과는 무엇인가?

const int n = 10;
int a[n] = {16,12,17,48,89,21,97,59,30,16};
int i, j, t, res=0;
for (i = 0; i < n; i++){
  for (j = i + 1; j < n; j++){
    if (a[i] > a[j]){
      t = a[i];
      a[i] = a[j];
      a[j] = t;
    }
  }
}
printf ("%d\n",a[2]);

① 16
② 18
③ 24
④ 32
⑤ 36

의견 (2개)

다음 프로그램에서 출력되는 x와 y값은 각각 무엇인가?

int x,y;
x= 10;
y= 10;
y=++x;
x=y++;
printf("%d, %d", x, y);

① x=10, y=11
② x=11, y=11
③ x=12, y=11
④ x=11, y=12
⑤ x=12, y=12

x=9, y=11일 때, 다음 프로그램의 출력 결과는 무엇인가?

if (x < 10)
if (y > 10)
  printf("A,");
else
  printf("B,");
printf("C");

① A,
② A,B,
③ B,C
④ A,C
⑤ C

의견 (3개)

다음 프로그램의 출력 결과는 무엇인가?

void f() {
   static int i = 0;
   printf("%d ", ++i);
}
int main() {
   f();
   f();
   f();
}

① 0 1 2
② 0 0 0
③ 1 1 1
④ 1 2 3
⑤ 3 2 1

다음 프로그램의 출력은 무엇인가?

int i,j,cnt=0;
for(i=0 ; i<10 ; i++) {
  for(j=i ; j<20 ; j+=3)
    cnt++;
}
printf ("%d",cnt);

① 60
② 59
③ 49
④ 53
⑤ 55

다음 프로그램의 출력 결과는 무엇인가?

int x;
for ( x = 1; x <= 5; x++) {
  if ( x == 2 ) {
    continue;
  }
  if ( x == 4 ) {
    break;
  }
  printf(“%d ”, x);
}

① 1 2 3 4 5
② 1 3
③ 1 2 3
④ 1 2 3 4
⑤ 1 3 5

함수 f를 구현했을 때, 문자열 “koi”를 출력하는 경우 무엇인가?

void f(inta, int b) {
  int c, d, e;
  c = a + 5;
  if (a + b < c) {
    if (a == b) {
      printf("koi");
    }  
  }
}

① f(3,3)
② f(3,5)
③ f(4,10)
④ f(10,10)
⑤ f(10,20)

다음과 같이 함수 f를 구현했을 때, f(2018)의 값은?

int f(int n) {
  if (n==0) return 0;
  else return f(n-1)+2;
}

① 4036
② 4092
③ 6054
④ 8072
⑤ 3064

다음 프로그램의 출력 결과는 무엇인가?

char str1[] = "abcde";
char str2[] = {'a','b','c','d','e','f','g'};
int len1 = sizeof(str1)-3;
int len2 = sizeof(str2)-3;

printf("%c%c",str1[len2],str2[len1]);

① dd
② ee
③ ed
④ ef
⑤ ff

다음 프로그램의 출력 결과는 무엇인가?

void swap(int a, int b) {
    int temp = a;
    a = b; b = temp;
    printf(“%d, %d, ”, a, b);
}
int main() {
    int a=2; int b=3;
    swap(a, b);
    printf(“%d, %d”, a, b);
}

① 2, 3, 3, 3
② 2, 3, 3, 2
③ 2, 3, 2, 3
④ 3, 2, 3, 2
⑤ 3, 2, 2, 3

E가 임의의 식(expression)이고 S가 임의의 명령문(statement)일 때 다음 중 while (E) { S }와 동일한 의미를 가지는 프로그램은 무엇인가?


① if (E) { S; while (E) { S; } } else ;
② if (E) S; else S;
③ do S; while (E)
④ if (E) { do while (E) S; } else S;
⑤ for (i=0;i<E;i++) S;

의견 (1개)

다음 프로그램의 출력 결과는 무엇인가?

char str[] = "Lucky Boy";
int i, score = 0;
for (i = 0; str[i]; i++) {
  int ch = str[i];
  if (ch >= 'A' && ch <= 'Z') {
    score += ch - 'A' + 1;
  }
}
printf("%d\n", score);

① 14
② 114
③ 274
④ 306
⑤ 334

다음 프로그램의 출력 결과는 무엇인가?

int temp=0, i=1;
while(i<10) {
  if( i%2==0 )
    i++;      
  if( temp>5 )
    break;
  temp += i;
}
printf("%d",temp);

① 2
② 3
③ 4
④ 5
⑤ 6

다음 프로그램의 출력 결과는 무엇인가?

int a=2;
int b=2;
while(b) {
  a++; 
  b--;    
}
do { 
  a--; 
  b++;
} while(a);
printf("%d", b);

① 4
② 3
③ 5
④ 6
⑤ 7

다음 프로그램 중 주어진 문자열의 길이를 정확하게 출력하는 것은?

int i;
char s[] = "hello";
for(i=0; s[i]; ++i);
printf("A: %d ", i);
i=0;
while(s[i++]);
printf("B: %d ", i);
return 0;

① A 만 옳은 값을 출력한다
② B 만 옳은 값을 출력한다
③ A,B 모두 옳은 값을 출력한다
④ 모두 옳은 값이 아니다
⑤ 컴파일 에러가 발생한다

다음 프로그램의 출력 결과는 무엇인가?

int temp=0, i=1;
while(i<10) {
  if( i%2==0 )
  {
    i++;
    continue;
  }
  i++;
  if( temp>5 )
    break;
  temp += i;
}
printf("%d",temp);

① 8
② 7
③ 4
④ 5
⑤ 6

다음 프로그램의 출력 결과는 무엇인가?

int f(int a){
   int b = a++;
   printf(“%d ”, b);
   return a;
}
int main(void) {
   int a = 1;
   int b = 0;
   if (a || (b = f(a)))
      printf(“%d ”, b); 
}

① 1 2
② 0
③ 2 2
④ 1
⑤ 2

다음 프로그램의 출력 결과는 무엇인가?

  int i = 0, j = 0, sum = 0;
  while(i < 10) {
    sum += i;
    if (sum % 2)
      continue;
    else if (sum > 20)
      break;
    i++;
  }
  printf("%d\n", sum);
  return 0;

① 23
② 24
③ 25
④ 26
⑤ 27

다음 프로그램의 출력 결과는 무엇인가?

int i,j,cnt=0;
for(i=0 ; i<10 ; i++) {
  for(j=i ; j<20 ; j+=3) {
    if((i<<1) > cnt)
      cnt++;
  }
}
printf ("%d",cnt);

① 24
② 20
③ 22
④ 26
⑤ 18

다음 프로그램에서 출력되는 x와 y값이 모두 1이 되기 위해서는 (A) 안에 들어갈 알맞은 코드는?

int x=1,y=1;
for (int i=1; i<=5; i++) {
   y=x+1;
   ( A )
   x=++y;
   printf("%d, %d", x, y);
}

① y= y % 2;
② y= y % 3;
③ y= y – 1;
④ y = 1;
⑤ y = y + 1;

다음 프로그램의 출력 결과는 무엇인가?

void fun1(void) {
  int x = 25;
  printf(“%d, ”, x);
  x++;
  printf(“%d, ”, x);
}
int main(void) {
  int x = 5;
  printf(“%d, ”, x);
  {
    int x = 7;
    printf(“%d, ”, x);
  }
  printf(“%d, ”, x);
  fun1();
  fun1();
  printf(“%d”, x);
  return 0;
}

① 5, 7, 7, 25, 26, 25, 26, 26
② 5, 7, 7, 25, 26, 26, 27, 27
③ 5, 7, 7, 25, 26, 26, 27, 7
④ 5, 7, 5, 25, 26, 25, 26, 7
⑤ 5, 7, 5, 25, 26, 25, 26, 5

다음 프로그램의 출력 결과는 무엇인가?

void fun2(void) {
  static int x = 50;
  printf(“%d, ”, x);
  x++;
  printf(“%d, ”, x);
}
int main(void) {
  int x = 5;
  printf(“%d, ”, x);
  {
    int x = 7;
    printf(“%d, ”, x);
  }
  printf(“%d, ”, x);
  fun2();
  fun2();
  printf(“%d”, x);
  return 0;
}

① 5, 7, 5, 50, 51, 50, 51, 5
② 5, 7, 5, 50, 51, 51, 52, 5
③ 5, 7, 7, 50, 51, 51, 52, 7
④ 5, 7, 7, 50, 51, 50, 51, 7
⑤ 5, 7, 5, 50, 51, 51, 52, 52

다음 프로그램의 출력 결과는 무엇인가?

int x= 1;
void fun3(void) {
  printf(“%d, ”, x);
  x *= 10;
  printf(“%d, ”, x);
}
int main(void) {
  int x = 5;
  printf(“%d, ”, x);
  {
    int x = 7;
    printf(“%d, ”, x);
  }
  printf(“%d, ”, x);
  fun3();
  fun3();
  printf(“%d”, x);
  return 0;
}

① 5, 7, 5, 1, 10, 1, 10, 5
② 5, 7, 7, 7, 70, 70, 700, 700
③ 5, 7, 5, 5, 50, 50, 500, 500
④ 5, 7, 5, 1, 10, 10, 100, 5
⑤ 5, 7, 5, 1, 10, 10, 100, 100

다음과 같이 함수 f를 구현했을 때, f(3,9)의 값은?

int f(int m, int n) {
  if(n<=0 && m<=0) {
    return 1;
  }
  else {
    if(n >= m)
      return f(n-2,m)+f(n-3,m);
    else
      return f(n,m-3);
  }
}

① 20
② 21
③ 17
④ 19
⑤ 22

다음과 같은 패턴을 생각하자.

*****
**▫**
*▫*▫*
**▫**
*****

이 패턴을 출력하기 위해서 함수를 아래와 같이 구현하였고 draw(5)를 호출하였다. 빈칸(a)에 들어갈 알맞은 코드는? 단, ▫는 띄어쓰기이다

void draw(int n) {
  for (int i=1; i<=n; i++) {
    for (int j=1; j<=n; j++)
      if (i==1 || i==n || j==1 || (a) || j == n) printf ("*");        else printf (" ");
    printf ("\n");
  }
}

① j==n-i
② j<n+1
③ j<i-1 || j==n-i
④ j==i || j==n-i+1
⑤ j==i || j==n-1

a=3, b=2, c=1 일 때, 다음 프로그램의 출력 결과는 무엇인가?

int i = 5;
if(a<b<c){
for(i--; i--; i--)
   printf(“%d ”, i);
} else {
for(i--; --i; i--)
   printf(“%d ”, i);
} 

① 4 2 0
② 3 1 -1 –3 5 ...
③ 3 1
④ 4 2 0 -2 4 ...
⑤ 5 3 1

의견 (1개)

입력 값 N에 따라 다음과 같은 결과를 얻는 함수 f를 작성하고자 한다. 빈 칸(1)와 (2)에 알맞은 구문은?

void f(int N)
{
  int row,h,s;
  for(row=0; row<N; row++)
  {
    for(h=1; h<N-row  ;h++)
      printf("=");
    for(s=1; (1) ;s++)
      if( (2) )
        printf("X");
      else
        printf("=");

    for(h=1; h<N-row ;h++)
      printf("=");
    printf("\n");
  }
}

① (1) s<=2*row (2) s==1
② (1) s<=2*row+1 (2) s==1 || s==2*row+1
③ (1) s<=2*row (2) s==1 || s==2*row
④ (1) s<=2*row+1 (2) s==2*row
⑤ (1) s<2*row+1 (2) s==0 || s==2*row+1

[단답형:컴퓨팅과 문제해결]

한 농부가 시장에 가서 백마리의 동물을 구매하는데 총 일천만원이 들었다. 송아지 한마리에 오십만원, 새끼양 한마리에 일십만원, 그리고 토끼는 한마리에 오천원이 들었다면, 농부가 구매한 토끼는 몇 마리인가?


의견 (1개)

다음과 같이 동작하는 기계를 생각하자. 기계 상태는 명령어와 메모리로 구성된다. 메모리는 정수 하나를 저장할 수 있고, 0으로 초기화되어 있다.

명령어는 다음과 같다:

  • PUSH(n): 자연수 n을 메모리에 저장한다.
  • INC: 메모리에 저장된 값을 1 증가 시킨다.
  • DEC: 메모리에 저장된 값을 1 감소 시킨다.
  • IF: 메모리에 저장된 값이 양수이면 2를 곱해서 저장하고, 0이하인 수이면 그대로 둔다.
  • REPEAT(C,n): 명령어 C를 n번 반복한다. 

다음 명령어를 모두 실행했을 때 메모리에 저장되어 있는 값은? 

PUSH 1;
REPEAT(INC, 3);
REPEAT(IF, 5);
REPEAT(DEC, 10);
IF 

의견 (1개)

아직까지 풀리지 않은 문제 중에 1937년 콜라즈가 제안한 추측이 있다. 콜라즈 추측이란 어떤 자연수도 아래의 규칙에 따르면 항상 1이 된다는 추측으로 아직 모든 자연수에 대해 증명이 되지 않았다.

  • 규칙1. 짝수이면 2로 나눈다.
  • 규칙2. 홀수이면 3을 곱하고 1을 더한다.
  • 규칙3. 1이면 종료하고 아니면 계속 수행한다. 

헤일스톤 수열은 콜라즈 추측을 계산하는 중에 나오는 수열이다. 즉, 4의 헤일스톤 수열은 4->2->1 그리고 5의 헤일스톤 수열은 5->16->8->4->2->1 이다. 9의 헤일스톤 수열 중에서 가장 큰 자연수는 무엇인가? 예를 들어, 5의 헤일스톤 수열 중에서 가장 큰 자연수는 16이다.


의견 (2개)

[단답형:알고리즘과 프로그래밍]

다음과 같이 함수 f를 구현했을 때, f(10)의 값은?

int f(int n) {
  int i, j, s;
  s = 0;
  for (i=0;i<n;i+=2)
    for (j=0;j<i;j+=2)
      s += i + j; 
  return s;
}

다음 프로그램의 출력 결과는 무엇인가?

  int n = 5;
  int i,j;
  int x = 0;
  for(i = 0; i < n; i++) {
    for(j = 0; j <= i; j++) {
      x = x + j + 1;
    }
  }
  printf("%d\n", x);
  return 0;

다음과 같이 함수 f를 구현했을 때, f(5, 10)의 값은?

int f(int v, int i){
  return i >= 0 ? f(v+1, i-1) : v;
}

다음과 같이 구현한 함수를 f(8,4)로 실행할 때 문자열 “hello”가 출력되는 횟수는?

int f(int a, int b) {
  printf ("hello");
  if (b==0 || a==b) return 1;
  else return f(a-1,b-1) + f(a-1,b);
}