안녕하세요? 기사친구 회원님 ^^
정보처리 자격시험 온라인 강의, 최강! 기사친구 입니다.
문의하신 질문에 답변 드리겠습니다~ ------------------------------------------------------------------------------------
알고리즘을 해석하기에 앞서 각 변수가 가지는 의미에 대해 생각해보아야 합니다.
문제의 알고리즘에서 설명되지 않은 변수는 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 이 들어가게 됩니다.
-----------------------------------------------------------------------------------
이상 기능사 실기시험 해설이었구요.
해설에서 이해안되는 부분 있거나 또 궁금한점 있으시면
언제든지 저희 기사친구 게시판을 이용해 주세요.
꼭 합격 하시구요!
좋은하루 되세요~ 감사합니다.^^ |