책 내용 질문하기
재질문
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
385
조회수
74
작성일
2017-06-13
작성자
탈퇴*원
첨부파일

디버깅 표만 올려주시고

질문에 대한 답을 안해주셔서 다시 올립니다

문제5번

변수 Q가 잘 이해가 안가는데요

소수를 판별하는 방법이

소수로 나눠보는건가요? 그래서 CNT를 증가시키면서

P를 소수로 나눠보는건가요?

그리고 문제6번은요 첫 반복문에서

H가 2씩증가되는 변수로 쓰엿는데

그아래 반복문에선 갑자기

열을 나타내는 변수로 쓰이나요?

이렇게 변수가 다른 방법으로 쓰이는 문제도 있나요

첫 변수 설명에 그럼 기재가 되어있어야하는거 아닌가요

문제에 변수H가 그냥 기재되어있으니까

이런걸 생각할 필요가 없는건가요? 너무 어렵네요

답변
2017-06-14 09:51:29

안녕하세요.

1)

이 알고리즘은 TMP[1]과 TMP[2]에 2와 3을 저장하고 시작한 것이므로 첫 번째와 두 번째 소수를 구하고 시작하는 알고리즘입니다.

CNT는 소수의 개수를 저장하는 변수인데, 이미 2개의 소수를 구하고 시작하는 것이므로 2로 초기화 됩니다.

P는 소수인지 판별할 대상인데 소수 중 2와 3을 구하고 시작하므로 그 다음 소수인 5부터 시작을 한 것입니다.

그래서 P는 5부터 1000까지 2씩 증가합니다. 2씩 증가하는 이유는 짝수의 경우 이미 구해 저장해 놓은 TMP[1]의 값인 2에 의해 나눠지면 나머지가 0이므로 소수가 아니기 때문에 대상에서 아예 제외를 시킨 것입니다.

바깥쪽 반복문이 P가 5일 때

안쪽 반복문의 Q는 2가 됩니다.

즉 5를 2로 나누면 나머지가 0이 아닙니다.

그러므로 안쪽 반복문의 Q를 1 증가시켜 3이 되는데, CNT가 2이므로 Q는 2까지만 반복되므로 안쪽 반복문을 빠져나옵니다.

5는 소수이므로 CNT의 값이 1 증가하여 3이 됩니다.

TMP[3]에는 5가 저장됩니다.

이어서 바깥쪽 반복문에서 P는 2가 증가되어 7이 됩니다.

안쪽 반복문에 의해 7은 2로 나눠보는데 나머지가 0이 아니므로 Q를 1증가하여 3으로 나눠봅니다.

3으로 나눌 때도 나머지가 0이 아니므로 Q를 1증가시켜 4가 되는데, CNT까지 반복인데, CNT가 3이므로 더이상 반복하지 않습니다.

즉 7도 소수입니다.

소수의 개수가 증가하여 CNT는 4가 됩니다.

위와 같은 과정으로 진행을 하면서 소수를 구할 때마다 CNT를 증가하고 안쪽 반복문은 그 CNT까지 Q를 증가시키면서 나머지가 0인지 판단하여 0인 경우 소수가 아니고, 안쪽 반복문이 종료될 때까지 0이 아닌 경우는 소수 처리를 수행하면 됩니다.

2)

변형된 이후에는 처리조건 등이 자세히 제시되므로 실제 시험에서는 H 변수의 용도가 정확히 제시될 것으로 예상됩니다.

즉 H : P 배열에 값을 저장할 때는 2씩 증가되는 숫자가 저장될 변수로, 이후 배열을 회전하여 이동할 때는 배열의 열 위치를 지정해 주는 변수

라고 제시될 수 있습니다.

혹 제시되지 않을 경우에는 순서도의 내용을 보고 파악해야 할 수도 있습니다. 난이도 조정을 위해 변수의 용도를 파악하는 것도 시험에 일부로 판단되어 제시되지 않을 수도 있기 때문이죠. 변경 전 시험에서는 변수의 용도가 제시되지 않는 경우도 있었습니다.

오늘도 즐거운 하루 되세요.

  • *
    2017-06-14 09:51:29

    안녕하세요.

    1)

    이 알고리즘은 TMP[1]과 TMP[2]에 2와 3을 저장하고 시작한 것이므로 첫 번째와 두 번째 소수를 구하고 시작하는 알고리즘입니다.

    CNT는 소수의 개수를 저장하는 변수인데, 이미 2개의 소수를 구하고 시작하는 것이므로 2로 초기화 됩니다.

    P는 소수인지 판별할 대상인데 소수 중 2와 3을 구하고 시작하므로 그 다음 소수인 5부터 시작을 한 것입니다.

    그래서 P는 5부터 1000까지 2씩 증가합니다. 2씩 증가하는 이유는 짝수의 경우 이미 구해 저장해 놓은 TMP[1]의 값인 2에 의해 나눠지면 나머지가 0이므로 소수가 아니기 때문에 대상에서 아예 제외를 시킨 것입니다.

    바깥쪽 반복문이 P가 5일 때

    안쪽 반복문의 Q는 2가 됩니다.

    즉 5를 2로 나누면 나머지가 0이 아닙니다.

    그러므로 안쪽 반복문의 Q를 1 증가시켜 3이 되는데, CNT가 2이므로 Q는 2까지만 반복되므로 안쪽 반복문을 빠져나옵니다.

    5는 소수이므로 CNT의 값이 1 증가하여 3이 됩니다.

    TMP[3]에는 5가 저장됩니다.

    이어서 바깥쪽 반복문에서 P는 2가 증가되어 7이 됩니다.

    안쪽 반복문에 의해 7은 2로 나눠보는데 나머지가 0이 아니므로 Q를 1증가하여 3으로 나눠봅니다.

    3으로 나눌 때도 나머지가 0이 아니므로 Q를 1증가시켜 4가 되는데, CNT까지 반복인데, CNT가 3이므로 더이상 반복하지 않습니다.

    즉 7도 소수입니다.

    소수의 개수가 증가하여 CNT는 4가 됩니다.

    위와 같은 과정으로 진행을 하면서 소수를 구할 때마다 CNT를 증가하고 안쪽 반복문은 그 CNT까지 Q를 증가시키면서 나머지가 0인지 판단하여 0인 경우 소수가 아니고, 안쪽 반복문이 종료될 때까지 0이 아닌 경우는 소수 처리를 수행하면 됩니다.

    2)

    변형된 이후에는 처리조건 등이 자세히 제시되므로 실제 시험에서는 H 변수의 용도가 정확히 제시될 것으로 예상됩니다.

    즉 H : P 배열에 값을 저장할 때는 2씩 증가되는 숫자가 저장될 변수로, 이후 배열을 회전하여 이동할 때는 배열의 열 위치를 지정해 주는 변수

    라고 제시될 수 있습니다.

    혹 제시되지 않을 경우에는 순서도의 내용을 보고 파악해야 할 수도 있습니다. 난이도 조정을 위해 변수의 용도를 파악하는 것도 시험에 일부로 판단되어 제시되지 않을 수도 있기 때문이죠. 변경 전 시험에서는 변수의 용도가 제시되지 않는 경우도 있었습니다.

    오늘도 즐거운 하루 되세요.

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