Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

건시스템정보처리학원 www.gunsys.

com 2009년 정보처리기능사 실기 알고리즘 기출문제


※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 1. (2009년 1월 17일 상시검정)


[2006년 3월 25일 상시검정과 동일][2006년 6월 11일, 2007년 6월 17일 상시검정과 거의 유사]

아래의 그림은 서로 다른 두 자연수 A, B를 입력하여 A와 B사이 자연수들의 합계를 구하는 순서도이다.


단, 합계는 작은 수에서 큰 수로 1씩 증가 시키며 구한다.
※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.

START

SUM=(①)

READ A, B

> <
A:(④)

반복 N=( ② ) 반복 N=( ③ )

SUM = SUM+( ⑤ ) SUM = ( ⑥ )

WRITE SUM

END

<답항보기>
1 SUM 2 N+2 3 B 4 P,Q,2 5 P,2,Q
6 HAP+P 7 SUM+P 8 99 9 N 10 M+N
11 P 12 SUM+2 13 Q,2,P 14 N+2 15 M/(N+2)
16 2,P,Q 17 SUM+N-M 18 -1 19 SUM-N+2 20 Q/(N+2)
21 100 22 B,A,1 23 N-SUM 24 SUM+N-2 25 (N+2)/M
26 2,Q,P 27 50 28 1 29 P,2,Q 30 (N+2)/Q
31 SUM-P 32 51 33 0 34 A,B,1 35 SUM+B
36 HAP-N 37 SUM+M-N 38 SUM+N 39 45 40 SUM+1

2009년 1월 17일 상시검정 알고리즘 힌트 및 모범답안


두 자연수 A, B를 입력 받아 A와 B 중에서 작은 수와 큰 수를 판별하여 작은 수에서 1씩 증가시켜가며 큰
수 까지 반복수행하면서 그 값을 합계변수 SUM에 누적하는 방법으로 순서도가 처리됩니다.
① 합계변수 SUM의 초기치를 구합니다.

힌트 ② 입력자연수 A가 B보다 클 경우 B에서 A까지 1씩 증가시키는 반복구문입니다.


③ 입력자연수 B가 A보다 클 경우 A에서 B까지 1씩 증가시키는 반복구문입니다.
④ 입력자연수 A와 B를 비교하여 A에서 B 또는 B에서 A까지 1씩 증가시키기 위한 판단구문입니다.
⑤ SUM에 N을 누적합니다.
⑥ SUM에 N을 누적합니다.

답안 ① 33 ② 22 ③ 34 ④3 ⑤9 ⑥ 38
- 1 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개
건시스템정보처리학원 www.gunsys.com 2009년 정보처리기능사 실기 알고리즘 기출문제
※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 2. (2009년 2월 15일 상시검정)


[2005년 9월 24일, 2006년 2월 12일 상시검정과 동일][2006년 11월 19일, 2007년 5월 20일 상시검정과 거의 유사]

아래의 그림은 배열 R에 기억된 30, 24, 71, 41, 43, 86, 70, 68, 78, 86, 98이 100이하의 자연수를 읽어 최대값,
최소값, 합계, 평균을 구하는 순서도이다. 단, 평균은 전체 자료의 합계에 대한 산술평균을 구하여야 하며 배열에
기억된 자연수는 R(1)부터 R(11)이다.
※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.

ST ART

R(11), SUM = 0, I = 0
MAX = 0, MIN = 100

I=( ① )

yes
I=(② )
no
yes I = I-1
MINR<R(I)
AVE = ( ⑥ )/I
no ( ③ ) = R(I)

출력
yes
MAX,MIN,SUM,AVE
MIN>R(I)
no ( ④ ) = R(I)
END
SUM=SUM+(⑤ )

<답항보기>
1 2 2 12 3 5 4 100 5 99
6 I=I+1 7 0 8 6 9 R(I) 10 R(I-1)
11 9 12 R(I)=MAX-MIN 13 R(I+1) 14 R(MIN) 15 MAX
16 SUM 17 MIN 18 I 19 R(MAX) 20 I=I+3
21 SUM+R(I) 22 I+1 23 -1 24 I=1 25 I-1
26 SUM+MAX 27 AVE 28 R/12 29 MAX=MAX-1 30 R(I)=MAX
31 MIN=R(I) 32 I=I+2 33 I=0 34 MIN=MIN-I 35 R(I)=MIN
36 MIN=I 37 MIN=S 38 SUM+A(I-1) 39 SUM+I 40 SUM+MIN

2009년 2월 15일 상시검정 알고리즘 힌트 및 모범답안


배열에 기억된 11개의 자연수 중 최대값과 최소값을 구하고 모두 수를 합산한 갑을 자료건수인 11로 나누어
산술평균을 구하여 출력하면 됩니다.
① I는 배열의 첨자결정 및 자료건수를 구하기 위한 색인값으로 사용되므로 순서도가 반복할 때마다 I의 값을
1씩 증가시킵니다.
힌트 ② I가 12가 되면 실제 배열 R(1)에서 R(11)에 기억된 값에 대한 처리가 마무리 됩니다.
③ 배열에 기억된 자연수 중 최대값을 구합니다.
④ 배열에 기억된 자연수 중 최소값을 구합니다.
⑤ 배열에 기억된 자연수의 합계를 SUM변수에 누적합니다.
⑥ 배열에 기억된 자연수의 합계를 기억하는 SUM변수의 값을 자료건수로 나누어 산술평균을 구합니다.

답안 ① 22 ② 2 ③ 15 ④ 17 ⑤9 ⑥ 16
- 2 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개
건시스템정보처리학원 www.gunsys.com 2009년 정보처리기능사 실기 알고리즘 기출문제
※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 3. (2009년 3월 8일 정기검정)

아래의 그림은 구구단 1~9단까지를 출력하는 순서도이다.


※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.

ST ART

A(9), I=0, K=0

( ① )

K = K+1

J=( ② )

( ③ ) = K*J

Y
J < (④ )
N
반복 I = 1, 9,. 1

출력
K, '*', I , '=', ( ⑤ )

Y
K < (④ )
N

END

<답항보기>
1 A(I) 2 I 3 B 4 I+1 5 I+2
6 A(J) 7 I+9 8 99 9 N 10 A(K)+1
11 A(K) 12 I-9 13 A(I)*1 14 N+2 15 A(J)+1
16 A(9) 17 J=0 18 -1 19 K+I 20 K*I
21 100 22 J*K 23 9-1 24 I+J 25 2
26 K 27 50 28 1 29 J*2 30 7
31 K*1 32 9 33 0 34 K*1 35 8
36 J*9 37 I*9 38 K*J 39 J*1 40 J +1

2009년 3월 8일 정기검정 알고리즘 힌트 및 모범답안


순서도는 이중 순환(반복) 구조로 작성되어 있는데 K변수는 바깥 순환구조로 1~9까지 반복하고 J변수는 안쪽
순환구조로 1~9까지 반복하면서 반복할 때 마다 K와 J를 곱한 값을 배열에 기억시켜 출력하는 형태입니다,
① J의 초기치를 결정 (J의 초기치는 단이 바뀔 때 마다 0으로 초기화 되어야 합니다.)
힌트 ② 안쪽 순환구조 J변수의 값을 반복할 때 마다 1씩 증가시킵니다.
③ K와 J의 값을 곱한 값을 배열에 기억 (이때 배열의 첨자는 J변수를 이용합니다.)
④ 안쪽 순환구조 및 바깥 순환구조에서 처리해야 할 최종 값은 모두 9입니다.
⑤ 구구단 각 단의 결과를 출력합니다.

답안 ① 17 ② 40 ③6 ④ 32 ⑤1

- 3 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개


건시스템정보처리학원 www.gunsys.com 2009년 정보처리기능사 실기 알고리즘 기출문제
※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 4. (2009년 3월 22일 상시검정) [2008년 9월 21일 상시검정과 동일]


아래의 그림은 1부터 500까지 완전수를 출력하고 출력한 완전수의 개수를 최종적으로 출력하는 순서도이다. 단, 순서도
에서 사용되는 연산자 중 /는 나누기를 의미하며 나누어 진 값에서 소수점 이하는 자동으로 절삭되고 MOD는 나머지 값을
구하는 연산자이다. ※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.
▶알고리즘에 사용된 변수는 아래와 같다.
SU : 1에서 500까지의 자연수 K, J 제어 변수 REM : 나머지 값 SUM 약수 합계 CNT 완전수 개수
▶완전수 : 자신의 약수 중 자신을 제외한 약수를 더하면 자신이 나오는 수를 의미한다.
예) 6의 약수 1, 2, 3, 6에서 1+2+3=6이 된다. 이때 6을 완전수라고 할 수 있다.

START

REM = 0, CNT = 0

SU = 1

YES
SU > 500

NO
SUM = 0 Write CNT
SU = SU + 1

K=(①)

END
J =1

YES NO
J >(②) ( ⑤ ) = SUM

NO YES

J = J +1 REM = SU-(SU/J)×( ③ ) CNT = CNT + 1

NO
REM = 0 Write SU
YES

SUM = ( ④ )

<답항보기>
1 I-1 2 -1 3 51 4 SU2 5 I+1
6 I MOD 5 7 SU / I 8 I+1 9 N 10 0
11 I/5 12 SUM+J 13 SUM+CNT 14 CNT+1 15 11
16 I*5 17 SUM+I 18 99 19 SU 20 12
21 J+1 22 SUM+K 23 SU1-100 24 SUM 25 SU+2
26 K+1 27 I 28 SU2 29 CNT 30 -11
31 SU/2 32 SU-1 33 6 34 K 35 -12
36 REM+1 37 100 38 60 39 REM 40 J

2009년 3월 22일 상시검정 알고리즘 힌트 및 모범답안


① 약수를 구하기 위해 반복 수행하는 J값의 최종 수행 값에 해당하는 K변수의 값을 결정합니다. (SU를 2로 나눈 값을
K변수의 값으로 정의하는 이유는 완전수에서 자신을 제외한 나머지 약수가 SU/2의 값보다 클 수가 없기 때문입니다.
혹시 40개의 답항 보기에서 SU/2가 답항보기에 없고 SU-1이 답항보기에 있었다면 답안은 SU-1이 될 수도 있겠지만
SU/2와 SU-1이 모두 있었다면 SU/2가 반복회수를 줄여 주므로 더욱 합리적인 답안이라고 할 수 있습니다.)

힌트 ② 자기 자신을 제외한 약수를 구하여 누적하기 위한 반복 수행 또는 반복 수행 종료를 결정합니다.


③ SU를 J로 나눈 나머지 값을 구합니다. (나머지 값을 구하는 이유는 나머지가 0이라면 J는 SU의 약수이기 때문입니다.)
④ J가 약수로 판별되면 SUM에 J의 값을 누적합니다. (SU(자기 자신)를 제외한 나머지 약수의 합계(SUM)가 SU와 같은가를
비교하여 만약 같다면 SU는 완전수라는 판단을 할 수 있으므로 SUM에 SU가 합산되지 않도록 수행됩니다.)
⑤ SU와 SUM을 비교하여 같다면 SU는 완전수이므로 완전수 개수를 구하는 CNT변수의 값을 1증가 시킨 후 SU를 출력합니다.
※약수를 구하는 로직이 기재된 건시스템정보처리학원 교재의 내용을 마지막 장에 첨부자료로 추가하였습니다.

답안 ① 31 ② 34 ③ 40 ④ 12 ⑤ 19
- 4 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개
건시스템정보처리학원 www.gunsys.com 2009년 정보처리기능사 실기 알고리즘 기출문제
※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 5. (2009년 4월 26일 상시검정)


[2008년 3월 23일 정기검정과 동일] [2007년 3월 11일 정기검정, 2008년 2월 23일 상시검정과 거의 동일]

아래의 그림은 5행, 5열의 2차원 배열에 아래와 같이 값을 입력하는 순서도이다. 2차원 배열의 저장 위치는 아래
왼쪽의 그림과 같고 순서도에 해당되는 처리 결과는 오른쪽의 2차원 배열의 형태로 저장된다.
[1][1] [1][2] [1][3] [1][4] [1][5] 2
[2][1] [2][2] [2][3] [2][4] [2][5] 2 3
[3][1] [3][2] [3][3] [3][4] [3][5] 2 3 4
[4][1] [4][2] [4][3] [4][4] [4][5] 2 3 4 5
[5][1] [5][2] [5][3] [5][4] [5][5] 2 3 4 5 6

※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.


▶알고리즘에 사용된 변수는 아래와 같다.
- A : 값을 저장하기 위한 배열 - P, Q : 인덱스 변수

START

P=0

P=( ① )

Q=0

( ② )

A(P, Q) = ( ③ )

Yes
( ④ )

No
Yes
( ⑤ )

No

END

<답항보기>
1 Q 2 3 3 yes 4 A(P) 5 A(Q)
6 13 7 M-1 8 A(I) 9 Comp1 10 Q<P
11 L 12 Q-P 13 P<5 14 Q=Q+1 15 2+A(P)
16 14 17 A(P)+1 18 <> 19 P+1 20 P=P+1
21 10 22 P 23 < 24 Q+P 25 A=A+1
26 A(P,Q) 27 5 28 >< 29 P>6 30 C+1
31 A(Q) 32 Q<6 33 Q>P 34 4 35 0
36 Q+1 37 P<6 38 Q-1 39 P=Q 40 P<4

2009년 4월 26일 상시검정 알고리즘 힌트 및 모범답안


① 배열의 행(줄)을 1 증가시킴
② 배열의 열(칸)을 1 증가시킴

힌트 ③ 배열에 값을 입력할 때 열을 정의하는 변수인 Q의 값에 1을 더한 값을 배열에 대입


(배열에 입력되는 값은 열을 반복수행하며 정의한 Q보다 1큰 값이기 때문)
④ 배열의 열을 정의하는 변수 Q가 행을 정의하는 변수 P의 값만큼 반복 수행하였는가를 판단
⑤ 배열의 행을 정의하는 P의 값이 5행까지 모두 증가하며 반복하였는가를 판단

답안 ① 19 ② 14 ③ 36 ④ 10 ⑤ 13
- 5 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개
건시스템정보처리학원 www.gunsys.com 2009년 정보처리기능사 실기 알고리즘 기출문제
※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 6. (2009년 5월 17일 정기검정)

아래의 그림은 5행, 7열의 2차원 배열에 아래와 같이 값을 입력하는 순서도이다. 2차원 배열의 저장 위치는 아래
왼쪽의 그림과 같고 순서도에 해당되는 처리 결과는 오른쪽의 2차원 배열의 형태로 저장된다.
[1][1] [1][2] [1][3] [1][4] [1][5] [1][6] [1][7] 1 2 3 4 5 6 7
[2][1] [2][2] [2][3] [2][4] [2][5] [2][6] [2][7] 2 3 4 5 6 7 1
[3][1] [3][2] [3][3] [3][4] [3][5] [3][6] [3][7] 3 4 5 6 7 1 2
[4][1] [4][2] [4][3] [4][4] [4][5] [4][6] [4][7] 4 5 6 7 1 2 3
[5][1] [5][2] [5][3] [5][4] [5][5] [5][6] [5][7] 5 6 7 1 2 3 4

※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.

ST ART

A(5,7), K=0, M=0, N=0

M = M+1

Y
M>5
N

N = N+1 PRINT A

( ① )
ST ART
Y
K>7
N
( ② )

(③ )=K

N<7

K=( ④ )

( ⑤ )

<답항보기>
1 K 2 N+2 3 B 4 M/N 5 A(M,N)=0
6 M=0 7 M=1 8 99 9 N 10 M+N
11 K=K*1 12 M=2 13 N+1 14 N+2 15 M/(N+2)
16 N=0 17 M+1 18 -1 19 M=0 20 K=0
21 100 22 M=M-2 23 A(5,7) 24 A(N,K) 25 K=1
26 N=A(M,N) 27 100 28 1 29 M,N 30 K=10
31 A(M,N)=K 32 1000 33 0 34 A(N,M) 35 K=100
36 A(M,N)=0 37 M 38 K=K+1 39 A(K,N) 40 A(M,N)

2009년 5월 17일 정기검정 알고리즘 힌트 및 모범답안


위 출제된 순서도 유형의 문제는 배열에 해당하는 표를 그려 두고 문제를 푸는 연습을 하면 이해가 빨라집니다.
① 배열에 입력될 값은 K변수로 결정하므로 K의 초기치는 0이므로 K변수의 값을 반복할 때 마다 1 증가시킴

힌트 ② K변수의 값은 1~7까지 가질 수 있는데 만약 7보다 크다면 1로 초기화시킴


③ 2차원 배열에 K변수의 값 입력 (2차원 배열의 행(줄) 변수는 M, 열(칸) 변수는 N)
④ 열변수 N이 7보다 커지면 행변수의 값을 K변수에 넘김 (새로운 행이 시작될 때 K변수의 값은 행변수 M과 동일함)
⑤ 열변수 N의 값을 초기화 시킴 (새로운 행이 시작되면 1열부터 시작하도록 하기 위함)

답안 ① 38 ② 25 ③ 40 ④ 37 ⑤ 16
- 6 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개
건시스템정보처리학원 www.gunsys.com 2009년 정보처리기능사 실기 알고리즘 기출문제
※ 시험을 치르신 분들의 의견을 조합하여 복원한 관계로 실제 시험장의 문제와 다소 차이가 있을 수 있습니다.

▶2009년도 출제 알고리즘 7. (2009년 5월 31일 상시검정)


[2007년 11월 18일, 2008년 8월 17일 상시검정과 동일]

아래의 그림은 2차원 배열 A에 직각삼각형 형태로 1000까지의 자연수 중 2부터 시작하여 순차적으로 소수를
15개 까지 저장하는 알고리즘이다. 2차원 배열의 저장 위치는 아래 왼쪽의 그림과 순서도에 해당되는 처리 결과는
오른쪽의 2차원 배열의 형태로 저장된다.
[1][1] [1][2] [1][3] [1][4] [1][5] 2
[2][1] [2][2] [2][3] [2][4] [2][5] 3 5
[3][1] [3][2] [3][3] [3][4] [3][5] 7 11 13
[4][1] [4][2] [4][3] [4][4] [4][5] 17 19 23 29
[5][1] [5][2] [5][3] [5][4] [5][5] 31 37 41 43 47

※ 아래 순서도의 괄호 안 내용에 가장 적합한 번호를 <답항보기>에서 한 가지만 선택하시오.


▶알고리즘에 사용된 변수는 아래와 같다.
TMP : 소수를 기억하는 배열 P, Q, K 인덱스 변수 MOK 몫 변수 NAM 나머지 변수 CNT 소수 개수

START

TMP(1)=2, TMP(2)=3

CNT = ( ① )
CNT = ( ④ )
반복 P=5, 1000, 2

반복 P=1, 5, 1
반복 Q = 2, CNT, 1

MOK = P/TMP(Q) K=(⑤)

NAM = ( ② ) 반복 Q = K, 5, 1

Y A(P)(Q) = TMP(CNT)
NAM = 0
N
CNT = CNT+1

CNT = CNT+1

TMP(CNT) = ( ③ )
배열 A 출력
Y
CNT = 15
N
END

<답항보기>
1 TMP(Q) 2 TMP 3 6-P 4 NAM=1 5 A(P,Q)=0
6 CNT+1 7 P=1 8 99 9 5 10 MOK
11 A(1000) 12 P=2 13 TMP(P) 14 N+2 15 2
16 P-6 17 P+1 18 NAM 19 M=0 20 Q=0
21 100 22 Q 23 A(5,7) 24 A(Q,P) 25 Q=1
26 P-MOK*TMP(Q) 27 100 28 1 29 Q,P 30 3
31 A(Q,P)=K 32 1000 33 0 34 P 35 Q-6
36 MOK*TMP(Q) 37 CNT 38 K+1 39 A(K,N) 40 A(P,Q)

2009년 5월 31일 상시검정 알고리즘 힌트 및 모범답안


① CNT의 초기치를 2로 정의한 것은 소수가 기억되는 배열 TMP(1), TMP(2)에는 2와 3을 초기치로 기억시켰기 때문입니다.
② 나머지를 구하기 위한 수식입니다. (소수는 자연수 중 자신과 1만을 약수로 가질 수 있기 때문에 자신과 1을 제외한 수로
나누었을 때 나머지가 0이 발생되지 않아야 소수로 인정됩니다.)
힌트 ③ P가 소수로 판별되었을 때 CNT를 1증가 시킨 후 TMP(CNT)에 P를 대입하여 기억시킵니다.
④ 소수를 출력하기 위해 배열의 첨자로 사용될 CNT배열을 1로 초기화 시킵니다.
⑤ 소수를 2차원 배열에 대입할 때 2차원 배열의 열 변수로 사용되는 Q의 초기치를 결정하기 위한 수식입니다.
※ 난이도가 높은 문제입니다. 소수에 관련된 내용은 건시스템정보처리학원 교재의 일부를 발췌하여 마지막장에 첨부하였습니다.

답안 ① 15 ② 26 ③ 34 ④ 28 ⑤3
- 7 - [자료배포] 건시스템(http://cafe.daum.net/gunsystem) 카페지기 무지개
2-08. 약수 알고리즘 연습문제2> 아래의 순서도는 자연수 N을 입력받아 입력받은 자연수의 약수를 구하는 순서도이다.
아래의 순서도에서 괄호에 해당하는 내용을 ‘답항보기’에서 찾아 순서도를 완성하라.
예제) 자연수 N을 입력받아 약수를 구하는 순서도를 작성하라.
- 사용되는 변수
- 사용되는 변수 ∴ N : 입력 자연수 ∴ L : 인덱스 변수
․ N : 입력 자연수
- 처리조건
․ A(100) : 약수를 저장하기 위한 배열
․ 입력되는 수와 구하고자 하는 약수의 범위는 자연수 범위로 한정한다.
․ NG : 나머지 기억 변수
․ 나머지는 mod() 함수를 사용하여 구한다. (Mod()함수 사용 예) mod(14, 3) ⇒ 결과 2
․ I : 인덱스 변수(처리 로직 배열 첨자 결정)
․ L : 인덱스 변수(출력 로직 배열 첨자 결정)
START
- 처리조건 ․ 입력되는 자연수는 1,000이하의 자연수가 입력된다.
▶문제 분석
․ 구하여진 약수는 배열에 저장한 후 최종적으로 오름차순으로 출력한다.
입력 N
특정한 자연수의 약수를 구하는 문제입니다. ․ 나머지는 MOD 연산자를 이용하여 구한다. (예) 14 MOD 3 ⇒ 결과 2
특정 자연수의 약수는 자신이하의 자연수들 중에서 자신을
반복 L = 1, N, 1
나누었을 때 나머지가 0인 수에 해당합니다.
No ▶답항보기
예를 들면 자연수 8의 약수는 1, 2, 4, 8이 됩니다. START
mod(N, L) = 0
1 2 3 4 5
Yes -1 0 1 N-1 N+1
▶순서도 분석 A(100)
출력 L 6 7 8 9 10
입력 받은 자연수 N을 1부터 N까지 순차적으로 나누었을
입력 N N A(1) A(I) A(N) 100
때 나머지가 0인 수만을 출력하면 됩니다.
예를 들면 입력받은 자연수가 8이라면 8을 1부터 8까지
A(1) = N
순차적으로 나누었을 때 나머지가 0이 되는 수는 1, 2, 4,
END 8입니다. I =(①)

연습문제1> 아래의 순서도는 자연수 N을 입력받아 입력받은 자연수의 약수를 구하는 순서도이다. N=( ② )
아래의 순서도에서 괄호에 해당하는 내용을 ‘답항보기’에서 찾아 순서도를 완성하라.
No Yes
단, 소수점 이하 절삭은 Int()함수를 사용한다. (예) Int(14.7) ⇒ 결과 24 N=0
- 사용되는 변수 ∴ N : 입력 자연수 ∴ L : 인덱스 변수
∴ MOK : 몫 기억 변수 ∴ NMG : 나머지 기억 변수 NG = (③) Mod N
반복 L = I, 1, (⑤)

START No
▶답항보기 NG = 0
출력 A(L)
1 2 3
입력 N Yes
0 1 NMG+MOK
I = I +1
L=( ① ) 4 5 6
<= > N-(MOK×L) A(I) = ( ④ ) END
(②) 7 8 9
L:N L +1 L -1 MOK-(N×L)
(③)
L=( ⑤ ) MOK = Int(N/L) ♠ 힌트...
END
1. 입력된 자연수가 8이라면 8의 약수가 순차적으로 아래의 구조로 배열에 입력됩니다.
NMG = ( ④ )
A(1) A(2) A(3) A(4)
No 8 4 2 1 ※ 임의의 자연수의 약수는 자신을 포함합니다.
NMG = 0
Yes
♠힌트... 2. 입력된 자연수를 약수를 기억하는 배열의 첫 번째 값으로 입력한 후 입력된 수를 1씩 감소시키며 배열
의 첫 번째 값에 대하여 나머지를 구하는 연산을 한 후 나머지가 0이면 배열의 첨자를 증가시킨 후
출력 L 1. L변수 초기치 및 로직의 반복횟수 :
입력함으로써 약수를 배열에 순차적으로 기억시킵니다.
선처리 후증가라는 것에 유의
3. 배열에 순차적으로 입력된 값은 내림차순으로 입력되었으므로 이를 역순으로 출력합니다.
2. 나머지 값 구하기 : 교재 2-6강 참조

- 8 -
2-10. 소수 알고리즘 연습문제> 아래의 순서도는 자연수 N을 입력받아 2에서 N까지의 소수의 합계를 구하는 순서도이다.
아래의 순서도에서 괄호에 해당하는 내용을 ‘답항보기’에서 찾아 순서도를 완성하라.
가. 소수의 정의 - 사용되는 변수 ∴ N : 입력 자연수 ∴ K : 인덱스 변수(소수 판별을 위한 제수)
a. 자연수 중에서 1과 자신만을 약수로 가지는 자연수 ∴ S : 합계 변수 ∴ L : 인덱스 변수(소수 판별을 위한 피제수)
b. 소수의 예
예1) 5는 소수 : 약수로 1과 5만을 가짐 ST ART ▶답항보기
예2) 9는 소수 아님 : 약수로 1, 3, 9를 가짐 1 2 3 4 5 6 7
L = 1, S = 0 L+1 N+1 K+1 S+1 S+L N K
나. 소수 판별 방법
a. 소수 유무를 판별하고자 하는 자연수 N을 피제수(나누어지는 값)로 정하고 제수(나누는 값)를 2에 입력 N
서 시작하여 1씩 증가시키며 나누어 갈 때 나머지가 0이 발생하면 나눈 값과 N을 비교하여 같으
면 N은 소수로 판정하고 다르면 N은 소수가 아닌 것으로 판정한다.
b. 소수 판별 방법의 예 L=( ① )
예1) 자연수 5의 소수 유무 판별 ♠ 힌트...
① mod(5, 2) = 1 ② mod(5, 3) = 2 ③ mod(5, 4) = 1 ④ mod(5, 5) = 0 K=2 1. ①번 : 소수 판별을 위한 자연수를
⇒ 5를 2부터 1씩 증가시키며 순차적으로 나눈 나머지가 0이 되는 시점이 자신의 수인 5로 나누었을 때 2에서 1회 반복할 때마다 1이 증
이기 때문에 5는 소수이다. 가되도록 처리합니다.
K=( ② )
예2) 자연수 9의 소수 유무 판별 No 2. ②번 : 소수의 판별을 위한 L을 K
① mod(9, 2)=1 ② mod(9, 3)=0 mod(L, K) = 0
로 나눈 나머지가 0이 아니면 나
⇒ 9를 2부터 순차적으로 나눈 나머지가 0이 되는 시점이 3으로 나누었을 때이기 때문에 자신의 수인 9 Yes 머지가 0이 될 때까지 K를 1씩
로 나누기 전에 나누어 떨어졌으므로 9는 소수가 아니다. No 증가시킵니다.
L=K
3. ③번 : 만약 L과 K가 같다면 L은
Yes
예제) 자연수 N을 입력받아 소수여부를 출력하는 순서도를 작성하라. 소수이므로 S에 L을 누적하여 소
S= ( ③ ) 수의 합계를 구합니다.
단, 나머지는 mod()함수를 사용하여 구한다. (Mod()함수 사용 예) mod(14, 3) ⇒ 결과 2 출력 S
4. ④번 : 구하고자 하는 소수의 합계
- 사용되는 변수 ∴ N : 입력 자연수 ∴ K : 인덱스 변수(소수 판별을 위한 제수)
범위는 2에서 N까지이므로 N까지
No
L=(④ ) END 의 소수 판별이 끝났다면 종료하
ST ART 고 N까지의 소수 판별이 끝나지
▶순서도 분석 Yes
않았다면 계속 수행합니다.
K=1 1. K=K+1 : 소수의 판별을 위해 입력 받은 수 N을 2부터
1씩 증가시키며 나누기 위한 수를 발생시킴
입력 N ※ K의 초기치가 1인 것은 1로 나눈 나머지는 모두 0이므
로 K=K+1을 수행하여 K를 2로 증가시킨 후 2부터 나
머지를 구하기 위함
K=K+1
2. mod(N, K)=0 : 소수 판별을 위한 수 N을 K로 나눈 나
No 머지가 0이 아니면 나머지가 0이 될 때 까지 K를 1씩
mod(N, K) = 0
증가시키며 반복 수행
Yes
3. 판단 N=K : mod(N, K)의 결과가 0이 발생했을 때 나
Yes No
N=K 누어진 값(피제수) N이 2부터 1씩 증가시키며 나눈 값
"소 수 " "소 수 아 님 " (제수) K와 같다면 K가 2에서 N-1까지 반복 수행하는
동안 나머지가 0으로 떨어진 적이 없다는 것을 의미하므
로 N은 소수이지만 N과 K가 같지 않다면 K가 N까지 증
가하기 전에 나누어떨어진 값(1과 N) 이외의 약수가 있
END
다는 것이므로 N은 소수가 아니다.

- 9 -

You might also like