상담문의

ㆍ HOME > 상담문의 > 정보처리기능사 실기
제 목 기출문제 중에서 2010년 3월 14일꺼요~[1]
글쓴이  기사친구작성일 2013-02-13 오전 9:54:56조회수 1672
글공유
게시글을 twitter로 보내기게시글을 facebook으로 보내기게시글을 Me2Day로 보내기게시글을 요즘으로 보내기
안녕하세요? 기사친구 회원님 ^^

정보처리 자격시험 온라인 강의, 최강! 기사친구 입니다.

문의하신 질문에 답변 드리겠습니다~
------------------------------------------------------------------------------------


알고리즘을 해석하기에 앞서 각 변수가 가지는 의미에 대해 생각해보아야 합니다.



문제의 알고리즘에서 설명되지 않은 변수는 K, i, M 이렇게 3가지가 있습니다.



1. M : M(입력) 칸으로 미루어봐서 M은 입력받을 1억이하의 정수라는 것을 쉽게 알 수 있습니다.



2. i : 주어진 알고리즘에서 보면 매번의 사이클마다 i를 1씩 증가시키는 것을 볼 수 있지요. 즉 i는 콤마(,)를 넣을 위치를 지정하는 변수라고 보면 됩니다. 그리고 출력을 할때 배열 S(20)의 각 자리수를 가리키는 변수로도 사용됩니다. S(20)의 각 요소를  S(i)와 같은 표현으로 사용할 것이기 때문에 어찌보면 당연한 말이겠지요. 알고리즘을 진행하는데 있어 가장 중요한 역할을 수행하는 변수라고 할수 있습니다.



3. K : 입력받은 값을 10으로 나누었을때의 나머지 즉, 1의자리 숫자를 저장하기 위한 변수입니다.



각 변수의 의미 파악이 충분히 된 후에 알고리즘을 좀 더 쉽게 이해하실 수 있으실 겁니다.



1번보기 : 1번보기를 4로 나누었을 때 나머지가 0인지를 판단하는 단계입니다. 즉 4로 나누어 떨어지는가 아닌가를 판단하여 나누어 떨어지면 콤마(,)를 대입하고 i를 1 증가시키죠. 나누어 떨어지지 않으면 콤마를 찍지 않고 그대로 알고리즘을 진행하는 것을 볼 수 있습니다. 따라서 1번보기에는 i 에 관련된 값이 들어가게 되겠지요.


그런데 여기서 왜 i 가 아니고 i + 1 이 들어가야 하는가에 대해 생각해볼 필요가 있습니다. i를 넣어버리면 출력값의 가장 마지막에 콤마가 찍히기 때문이겠죠? S(0)에 콤마가 들어간다는 말입니다. S(0)은 반드시 입력값(M)의 1의 자리수가 들어가야 합니다.



2번보기 : 변수K 에 대입할 값을 찾는 문제입니다. 변수K는 M을 10으로 나누었을 때의 나머지 이므로 M%10이 됨을 쉽게 알 수 있습니다.



3번보기 : 알고리즘을 따라 쭉 내려오면서 지금까지 했던 과정에 대해 생각해봅시다. 각 4번째 자리에 콤마를 찍고, 변수K에는 입력받은 M의 1의 자리를 K에 저장시켰습니다. 그리고 다음에 무엇을 해야 할까요. K에 입력시킨 1의 자리를 탈락시킬 필요가 있습니다. 그래야 다음자리 수를 그 다음 사이클에서 K에 저장시킬 수 있기 때문이지요. 1의 자리를 탈락시키기 위해서는 그 숫자를 10으로 나누어서 그 몫을 반환시키면 됩니다. 따라서 M = M/10 이 됩니다.



이와 같이 사이클을 계속 진행시키다보면 언젠가는 M값이 0이 되는 순간이 올 것입니다.


M값이 0이 되었다는 말은 즉, (M = M/10)에 따라 M을 10으로 나눈 몫이 0이라는 말입니다. 즉 M 이 드디어 1의 자리만 남았다는 의미지요.


이때 (M값이 0일때 ) 또 다른 사이클(출력을 위한 알고리즘)을 진행하게 됩니다.


M값이 0 이 되었을때, 배열 S(20)과 변수 i의 값에 대해 생각해봅시다.


배열 S(20)에는 출력하고자 하는 값이 거꾸로 정렬되어 있을 것입니다. 왜냐하면 출력하고자 하는 값의 1의자리부터 십의자리 백의자리 ..... 등등을 S(0)부터 S(1), S(2)....에 입력 시켰기 때문입니다.



예를들어 ‘1234567’을 입력하였다면 현재 상태에서 “S(20) = 7,654,321”과 같은 상태가 되어 있을 것입니다.


S(0) = "7"


S(1) = ","


S(2) = "6"


S(3) = "5"


S(4) = "4"


S(5) = ","


S(6)= "3"


S(7)= "2"


S(8)= "1"


그리고 이때의 변수i 에는 9의 값이 들어가 있습니다.



그렇다면 이제 출력을 할때 S(i)의 값을 S(8)부터 하나씩 줄여나가며 하나하나 출력하면 되겠죠.



4번보기 : 변수i의 값을 하나 줄여야 하므로 당연히 여기에는 i=i-1 이 들어가게 됩니다.



5번보기 : 5번보기에 들어가는 판단연산으로 인해 출력을 그만 둘 것인가 계속 할 것인가를 판단하게됨을 알 수 있습니다. 당연히 변수i가 0이 될 때까지만 출력을 해야겠지요. 따라서 i >= 0 이 들어가게 됩니다.

-----------------------------------------------------------------------------------

이상 기능사 실기시험 해설이었구요.

해설에서 이해안되는 부분 있거나 또 궁금한점 있으시면

언제든지 저희 기사친구 게시판을 이용해 주세요.

꼭 합격 하시구요!

좋은하루 되세요~ 감사합니다.^^

댓글쓰기 :
강미연
해설을 들으니 조금이나마 이해가 갑니다. 감사합니다~
2013/02/14 오후 2:45:42
  [1]  
이전글 연장- 수험표보냅니다.
다음글 소스코딩에서요
고객지원센터

02-556-3650

평일 9:00~18:00

일요일 공휴일 휴무

계좌번호안내

농협은행 724-01-173541

국민은행 633601-04-044665

예금주 (주)조은캠프

상호명 : (주)조은캠프 ㅣ 대표이사 : 이유락 ㅣ 대구광역시 북구 대학로80 경북대학교 IT융합산업빌딩 11층
사업자번호 : 504-81-62507 ㅣ 본사 : 053-954-0030 ㅣ 기술지원 : 070-7019-1144 ㅣ 팩스 : 050-7711-2200 ㅣ 
원격평생교육시설13호 ㅣ 출판사 : 345-2005-00013 ㅣ 통신판매업 : 2005-대구북구-00158 ㅣ 정보보호책임자 : 김창연  
기사친구는 SSL보안방식의 암호화구간을 적용하여 사이트를 안전하게 이용하실 수 있습니다.
COPYRIGHT 2005 (주)조은캠프 ALL RIGHTS RESERVED.관리자에게 메일보내기