본문 바로가기
카테고리 없음

정올 2007년 시도예선 중고등부 문제풀이

by plzfday 2018. 4. 6.

2007 시도예선 중고등부 문제풀이

  1. 한 변에 11그루를 세울 수 있지만 4방향에 세울 경우, 4번의 중첩이 생기므로 44 - 4 = 40이므로 답은 3번이다.

  2. A*B의 일의 자리 수가 7이므로 경우의 수를 세보면 3 x 9가 이상적이다. 또한 AB x BA 이므로 A=3, B=9여도 되고 A=9, B=3이여도 된다. 따라서 3 + 9 = 12, 답은 4번이다.

  3. 삼각형의 세 번이 가장 많이 지나가는 경우를 찾으면 된다. 답은 5번

  4. 역으로 계산하면 된다. A ◎ 4를 A'로 놓고 A' ◎ 5 = 3을 계산하면 A'가 나올 수 있는 수가 15,16,17,18,19가 나온다. A ◎ 4 = 15,16,17,18,19이니깐 4*5=20 답은 5번이다.

  5. 20 x 4 + 30 + 10π(코너); 코너 계산법(2 x 2πr/4). 따라서 110 + 31.4 = 141.4 정도가 나오므로 답은 3번. 하지만 사실 코너를 돌 때의 길이는 저게 확실히 맞는지 잘 모르겠다.

  6. 주어진 문장을 부등식으로 나타내보면

    • B > A
    • B > C
    • D > C
    • D > A
    • A + B < C + D
    • A + D > B + C

A, C는 B와 D보다는 다 작으니, B와 D 중 어느 것이 더 큰 가를 확인해야하는데 마지막 두 개의 조건이 그것을 채워준다.

|A - C < D - B|
|B - D < A - C| 연립 => B - D < D - B

B - D < D - B라는 말은 D가 더 크다는 말이므로(키는 양수) D가 4명 중에 가장 큰 사람임을 알 수 있다. 답은 4번

  7. 방정식을 세워서 풀면 되는 문제이다. 1995년의 소비자 물가를 X로 놓으면 2000년의 소물은 6/5X, 2005년의 소물은 36/25X이다. 곱하기 100을 해서 퍼센트로 나타내면 144%이고 따라서 44%가 "올랐다는 것을 알 수 있다" 답은 5번

  8. 갑을 기준으로 하나를 설정해서 예상을 해본다. [예상] 갑: 참말쟁이, 을: 참말쟁이 갑: 거짓쟁이, 을: 참말쟁이(왜냐하면 갑이 거짓말쟁이인데 을도 거짓말쟁이이면 갑은 참말쟁이라는 모순이 생겨버린다. 즉 이 추측은 맞다) 따라서 갑은 알 수 없고 을은 항상 참말쟁이임을 찾을 수 있다.

  9. 다른 방법이 있는 지는 모르겠지만 그냥 正쓰면서 계산해주면 답이 3번(13개)라는 것을 알 수 있다.

  10. 이런 문제는 하나를 범인이라고 설정하고 모든 사람의 의견을 보면서 말의 모순을 찾으면 된다.(아마도..?) 갑이 범인이라고 하면 갑은 거짓말을 하고 있다는 말인데 역시나 거짓말을 했고 을을 확인해보면 갑은 범인이지만 "갑은 범인이 아니다"라는 거짓말을 했으므로 거짓말을 하고 있다. 병의 경우도 "내가 범인이다"라는 옹호성 거짓말을 한다. 모든 용의자들이 거짓말을 했으므로 답은 5번이다.

  11. N-비숍문제다. 쉽게 풀 수 있는 방법은 체스판에 대각선으로 보는 것이다. 그러면 왼쪽 대각선 끝에부터 한 개, 그 다음 대각선에서 한 개 ··· 12번째 대각선까지 세울 수 있는데 마지막 13번째 한 칸에서는 1번째 칸과 겹치므로 놓을 수 없다. 따라서 최대로 놓을 수 있는 비숍의 개수는 12개이다. 답은 4번

  12. 이 문제는 왜 냈는지 잘 모르겠다. 첫 번째 사람이 자신의 자리를 모르기 때문에 본인 자리에 앉을 확률을 1/2이다. 또한 다음 사람도 1/2 ··· 마지막 사람도 결국엔 원래 자신의 자리에 앉거나 안 앉거나 둘 중 하나이므로 확률은 1/2임을 알 수 있다. 답은 5번

  13. 이진 탐색 트리의 기본 지식을 물어보는 문제이다. 이진 탐색 트리는 현재 노드보다 구하려는 값(N)이 작으면 왼쪽 자식 노드로 가고 크면 오른쪽 자식 노드로 이동한다.

 그래서 30은 처음 루트노드(25)부터 시작하면 우측 노드로 이동(42)->좌측 노드로 이동(33)->좌측 노드로 이동을 한다. 따라서 정답은 1번

  14. 전위 순회의 진행 방식은

      1번: 노드를 방문한다.

      2번: 왼쪽 서브 트리를 전위 순회한다.

      3번: 오른쪽 서브 트리를 전위 순회한다.

따라서 이 그래프에서는 A B D E C F가 되므로 2번이 정답이다.

  15. (그림 추가 작업 중..)

  16. 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99으로 4번이다.

  17. i가 3의 배수와 5의 배수일 때 c가 1씩 증가하는데, i가 15의 배수일 때는 c가 2씩 증가한다.\ 1~30의 수에서 3의 배수(15의 배수는 제외) 개수는 8개, 5의 배수의 개수는 4개, 15의 배수는 15, 30이 나오는데 if문 두 번 걸리므로 +4 따라서 답은 16, 4번

  18. i는 1부터 시작하므로 1024일 때 i가 11이 된다. 따라서 답은 5번

  19. 답은 3번(라)인데 나머지가 왜 틀렸는지 설명하겠다. (나): i = 1부터 했어야했다. (다): while(i <= N)이어야 했다.

  20. 모든 경우에 if문은 성립한다고 가정하면 i=1일 때 j=[2,10]-> 9번, i=2일 때 j=[3,10]->8번 ··· 1번까지. 등차수열 합 공식을 사용하면 45, 답은 3번이다.

  21. 모르겠다. 퀵정렬 알고리즘과  비슷하긴 한데 조금 더 찾아봐야 한다.

  22. for문을 진행하면 x는 z - m인데 m이 음수일 때도 있으므로 1번이 아닌 4번을 해줘야 항상 1이 출력된다.

  23. f의 매개변수는 int& 형이므로 포인터처럼 함수 내에서 값을 변경해도 같이 바뀐다. 첫 줄 때문에 a = 20이 되고 두 번째 줄로 b = 40이 된다. 세 번째 줄로 a = 40이 된다. 따라서 답은 5번이다.

  24. 3번이 무조건 답

  25. [a[1], a[N]] / N을 분배법칙으로 해주면 a[1]/N + a[2]/N + ··· + a[N]/N이다. 따라서 답은 2번

  26. 첫번째 if문은 소수를 판별한다는 문제라는 것을 알 수 있다. 두번째 if문은 제곱수를 찾을 때마다 a=1을 해주는데 마지막 사실 제곱수는 소수일리가 없으므로 c는 증가할 수가 없다. 따라서 답은 1번이다.

  27. 무조건 3번

  28. j와 k는 3칸씩 시작 간격을 두고 정렬을 하는데 배열 전체로 보면 j의 한 값에서 +3씩 선택된 것들끼리 그룹지어 정렬이 됨. 그래서 마지막 3칸에서는 총 그룹에서 최대값들끼리 모인 것이므로 A[N], A[N - 1], A[N - 2]. 이 셋이 모두 될 수 있다.

  29. 문제 의도는 do while과 while의 차이점을 물어본 것 같다. do는 어느 경우에서든 내부의 명령들을 한 번은 실행하므로 아래 g()도 p2()를 적어도 한 번은 수행해줘야 한다. 따라서 답은 3번이다.

  30. 첫번째 if문을 총 N번 돌아서 a = N, b = N, s = N. 두번째부터는 else 문에 N번 걸려서 a = 0, b = 0, s = 2N. 세번째로는 다시 if문에 N번 걸려서 a = N, b = 0, s= 3N.\ 하지만 마지막으로 if문이나 else문 둘 중 하나에는 무조건 다시 걸릴 수 있으므로 s는 +1을 하게 된다. 따라서 s의 최대값은 3N + 1. 답은 5번


댓글