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

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

by plzfday 2018. 4. 6.

2008년도 풀이

  1. 수열 1, 3, 6, 11, 19, 31, 48, ( )이면 (+2, +3, +5, +8, +12, + 17)
    -> 이 수열의 계차 수열 (1, 2, 3, 4, 5) 따라서 다음 수는 +6이여야 하고 17 + 6 = 23, 48 + 23 = 71. 답은 71이된다.

  2. B, A를 곱했을 때 일의 자리에 B가 나오기 위해서는 A, B 중에 하나가 1이면 편하게 구할 수 있다. A는 1이고 B는 1을 제외한 나머지 수가 될 수 있는데 4번째 줄 B C가 되려면 B*B의 값이 10을 넘으면 안된다. 따라서 B는 2 또는 3이된다. A=1,B=2일 경우 252가 나오는데 E와 B가 같은 수가 될 수 없으므로 B=2일 때는 틀렸다. 따라서 A=1, B=3이다. 이 값을 계산하면 403이 나오고 D는 0이다.

  3. 1을 7로 나누면 0.142857···으로 142857의 반복이 되므로 97 % 6 = 1. 답은 1이 된다.

  4. (A/3) % 10 = 3. 거꾸로 풀어보면 (A/3) = 3, 13, 23, 33. A는 두 자리 수 이상이므로 39, 40, 41, 69, 70, 71, 99, 100, 101로 9개이다.

  5. H를 홍콩 돈, S를 싱가폴 돈, $를 미국 돈으로 놓는다. $40 = S32, S80 = H100. GCD(32, 80)=16. $20 = S16, S16 = H20. 따라서 $20 = H20. $1 = H1. $111 = H111.

  6. 달력을 그렸다. 

    근데 윤년일때 가능한 거였다.

  7. 25 x 10개 + 1 x 4개 => 14개
    25 x 9개 + 12 x 2개 + 5 x 1개 => 12개 
    25 x 8개 + 12 x 4개 + 5 x 1개 + 1 x 1개 => 14개

  8. A가 맞다면 D의 발언이 틀려야하는데 어긋나므로 A는 제외
    B가 맞다면 B는 꼴찌여야하는데 D가 꼴찌를 해버리면 안되므로 모순이 생겨서 B는 제외
    C가 맞다면 모순이 생기지 않으므로 1등은 D가 된다.

  9. 집합의 분할
    S(n, k) = S(n - 1, k - 1) + k (n - 1, k)
    S(6, 3) = 15 + 3
    25 = 90
    S(5, 2) = 1 + 2 7
    S(4, 2) = 1 + 2
    3
    S(3, 2) = 1 + 2 1
    S(5, 3) = 7 + 3
    6 = 25
    S(4, 3) = S(3, 2) + 3 S(3, 3)
    S(4, 3) = 3 + 3
    1 = 6

    90이 답이 된다.

  10. 주어진 조건에 따라서 아래의 그림까지는 나온다. 


    그 다음부터는 같은 색의 구두와 지갑을 가진 사람을 골고루 나누기 위해서 다음과 같이 해준다.

    주어진 조건을 확인해 보면 모두 맞는 것을 볼 수 있고 지갑만 빨간색인 사람은 따라서 3명이다.

  11. 두 점 사이의 거리가 1일 때 넓이 1: 9개
    넓이 4: 4개
    넓이 9: 1개
    넓이 5: 2개
    넓이 2: 4개
    -> 20개

  12. n(국어) = 285, n(영어) = 195, n(수학) = 115
    n(국어∩영어) = 70, n(국어∩수학) = 45, n(영어∩수학) = 50
    n(수강 학생) = 450
    n(국어∪영어∪수학) = 285+195+115-70-45-50 + n(국어∩영어∩수학)
    n(국어∩영어∩수학) = 20
    n(국어만∪영어만∪수학만) = 450 - (70+45+50-20*2) = 325
    따라서 답은 325, 5번이다.

  13. DP로 풀 수 있다. 맨 좌, 우를 제외한 나머지 노드들은 max(왼쪽 부모 값+본인 값, 오른쪽 부모 값+본인 값)이다. 따라서 이 방식대로 계산해주면 마지막 2번에 것에서 37의 최대합이 나오게 된다.

  14. 후위 순회는 왼쪽, 오른쪽, 노드이기 때문에 4 5 6 2 3 1이다.

  15. DP문제(추후에 고치겠음)

  16. for문 10번 도니깐 c = 10

  17. i = 0일 때 c는 0이 된다. 따라서 나머지 코드를 돌려도 0과 i를 곱하는 것이기 때문에 결과적으로 c는 0이다.

  18. i = 1일 때 s=2되는 것을 제외하고는 s=4, 8, 16, 5, 10, 3, 6, 12가
    반복되기 때문에 반복문의 반복 횟수 - 1 = 2007.
    2007 % 8 = 7이기 때문에 답은 6이 된다.

  19. count 배열의 최대 인덱스는 25이기 때문에 줄여줘야 한다. 그래서 대문자 알파벳의 시작인 'A'를 빼주는 것이다.

  20. 변수명 maxoccur의 의미대로 가장 많이 나온 알파벳을 찾는 것이지만 "COCOA"에서는 O와 C가 두 번으로 같기 때문에 C보다 뒤에 나오는 O가 답이 된다.

  21. Min-heap.(부모 노드가 자식보다 크면 안된다) 그래서 2번의 4를 넣을 때 틀렸다.

  22. 1~100까지 소수의 제곱의 개수를 구하는 코드이다. 2,3,5,7 -> 4개

  23. 앞에 자신보다 큰 녀석의 개수의 총합을 구하면 답이 된다. 왜냐하면 if문이 뒤에 것이 크면 break하는 것인데 반대로 뒤에 것이 작거나 같으면 ㄱ이 수행되기 때문이다. 1 + 0 + 3 + 0 + 5 = 9

  24. 23번 코드의 의미를 알면 굉장히 쉬운 문제다.
    | 1번 - 15 | 2번 - 5 | 3번 - 2 | 4번 - 4 | 5번 - 6 | 답은 3번

  25. a^b % m을 구하는 문제다. 2^3 = 8, 8 % 9 = 8.

  26. 3^32130은 규칙이 있을 것이다. 3의 n제곱들을 3 9 7 1의 규칙을 가지므로 32130 % 4 = 2 따라서 9 % 10 = 9이다. 답은 4번

  27. 피보나치 함수를 구현한 것이다. 그래서 7번째 피보나치 수를 찾아주면 되서 답은 13, 5번이다.

  28. 양의 정수이기 때문에 0, 2번

  29. 2의 제곱인지 확인하는 코드인데 (n & (n - 1)) == 0 이다. 따라서 답은 3번이다.


댓글