책 내용 질문하기
449쪽 질문드립니다
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
449
조회수
77
작성일
2019-10-01
작성자
탈퇴*원
첨부파일

순서도가

 

start

i,j,k,nmg

i=0

i=i+1

j=i

 

[반복 k=1,5,1]

nmg=j-INT(j-4)×4

  - no

       | yes

 

너무 대충 썼지만 이해바랍니다

 

우선 이해가 전혀 안되는게 nmg=j-INT(j/4)×4 부분입니다

 

처음 돌렸다고 가정하면 위에서부터

i=0이었다가 i=i+1로 1이됩니다.

다음줄에 j=i이므로 j는 1이되고요

이제 반복문으로 들어갑니다.

 

k부분은 접어두고

 

이제 j가 1을 전제로 식에 대입하면

 

nmg=1-INT(1/4)×4 입니다. 이걸 풀어보면

nmg= 1-INT(0.25)×4

= nmg= 1-0×4

= nmg= 1-0

= nmg=1

 

다음줄의 nmg=1일때의 조건에 yes가 되죠ㅠㅠ

 

이게 no로가서 1021이 될때까지 i 계속 올린 후 5번 반복하면서 j/4가 나머지가 1이고 1/4를 뺀 3/4를 가지고 몫을 줄여 5번 반복이 끝나면서 조건에 맞는 i값이 출력하는건 알고있지만. 이게 처음에 nmg=1 조건에서 no가되야 정답인데 왜 머리혹으로 암만생각해도 yes일까요...ㅠ

 

엑셀 수식으로 1-INT(1/4)×4 를 계산해봤는데 자꾸 저처럼 1이라네요ㅠ

 

알려주시면 감사하겠습니다

답변
2019-10-01 16:28:45

안녕하세요 길벗수험서 운영팀입니다.

 

..어디서 혼동을 하고 계신지 잘 모르겠습니다.

말씀을 들어보니 알고리즘 자체도 정확하게 이해하신듯 하여 어떻게 설명을 드려야할지 모르겠네요.

 

첫 회전 i가 1일 때, 7번 순서도에서 Yes로 넘어가는게 맞습니다.

1은 4로 나눈 나머지는 1이 맞으니까요.

다만 두번 째 k 반복문에서 j가 0값을 갖고 6번 순서도를 수행할 때, nmg는 0을 갖게 되고 7번 순서도를 만나 3번 순서도로 넘어가게 됩니다.

 

1개인 사과를 4명이 쪼개는 과정이 수행되었다는 사실 자체가 이해가 안되신게 아닌가 추측합니다. 이러한 경우를 제외하기 위해서는 애초에 사과의 개수를 5개 이상부터 계산하는게 맞으나, 1개일 때부터 수행해도 자연스레 조건에 해당되지 않아 5 이상의 수로 넘어가기 때문에 포함되어 있는 것입니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-10-01 16:28:45

    안녕하세요 길벗수험서 운영팀입니다.

     

    ..어디서 혼동을 하고 계신지 잘 모르겠습니다.

    말씀을 들어보니 알고리즘 자체도 정확하게 이해하신듯 하여 어떻게 설명을 드려야할지 모르겠네요.

     

    첫 회전 i가 1일 때, 7번 순서도에서 Yes로 넘어가는게 맞습니다.

    1은 4로 나눈 나머지는 1이 맞으니까요.

    다만 두번 째 k 반복문에서 j가 0값을 갖고 6번 순서도를 수행할 때, nmg는 0을 갖게 되고 7번 순서도를 만나 3번 순서도로 넘어가게 됩니다.

     

    1개인 사과를 4명이 쪼개는 과정이 수행되었다는 사실 자체가 이해가 안되신게 아닌가 추측합니다. 이러한 경우를 제외하기 위해서는 애초에 사과의 개수를 5개 이상부터 계산하는게 맞으나, 1개일 때부터 수행해도 자연스레 조건에 해당되지 않아 5 이상의 수로 넘어가기 때문에 포함되어 있는 것입니다.

     

    행복한 하루되세요 :)

  • 관리자
    2019-10-02 10:09:32

    안녕하세요 길벗수험서 운영팀입니다.

     

    아뇨, 전혀 모르는 상태에서 문제를 접하게 되면 디버깅이 불가능한 문제입니다.

    알고리즘을 이해하고 빈칸에 무엇이 들어갈지 예측해야 하죠.

    (사실 이런 문제는 거의 동일하게 출제되기 때문에 1021만 알고 있으면 디버깅이 가능합니다.)

     

    -----

     

    전혀 감정적으로 느끼지 않았습니다 :)

    순서도는 대부분 기존의 유형들을 답습해 나가는 형태로 출제되고 있고,

    C나 Java는 기사시험의 특성상 그 구조와 원리를 수험자가 이해하고 있는지 수준으로만 출제되고 있습니다.

     

    회원님이 평소에 코드를 익숙하게 사용하셨는데 알고리즘 파트가 어렵게 느껴지신다면, 평소 로직을 순서대로 풀어내는 과정에 익숙해지셔서 어색하게 느껴지시는 것일뿐 적응한다면 알고리즘 과목은 점수를 보장해줄 것입니다.

     

    행복한 하루되세요 :)

  • *
    2019-10-01 21:02:24

    저번 질문에 이어 추가적으로 간단하게 질문하나만 더할께요

     

    엑셀 2019버전 매크로로 돌려 디버깅을 해보았습니다.

     

    파일을 열어보시면 결과가 옳게 나오는걸 확인할 수 있었습니다.

     

    그런데 여기서 의문이 들더라고요.

     

    실제 시험에 이처럼 수없이 반복되는 문제가 나오면 디버깅을 할 수 있을까 하고요....

     

    이 문제는 디버깅을 할 수 있는문제인가요?

     

    <여담>

    정답을 알고 1021를 기준으로 하나씩 손으로 풀면 쉽게풀리는데

     

    1부터 끝이 어딜지 모르는 문제의 디버깅을 하면 절때 못할것 같아요.

     

    아마 문제가 물어보는게 "과정"이다 보니 좀 헷갈리기는 하더군요

     

    평소에 C 와 VBA를 많이 다루고 몇백~천라인은 기본으로 짰었는데,, 막상 결과를 도출하는게 아닌 남이 코딩한것을 해석하고 분석해야하니 참 어렵더라구요..

     

    기출책 빼고는 JAVA문제가 거의 없던것 같은데.. 어렵게 나오지는 않을 것 같네요

     

    항상 질문하는 수험자분들께 친절히 답변하시느라 고생하시고.. 감사합니다 :) (어제올린 글이 감정적으로 느끼셨다면 사과드릴께요!!)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.