잡담

크리스마스

2019. 12. 26. 20:55

...

인터넷에 가장 사람이 모이지 않는 날

 

 

더러운 인싸놈들!

저번 편 세줄요약

 

1. 작년에 엄청 설레서 정올 치러감.

2. 그런데 시험 치는데 몬가 좀 이상했음.

3. 그리고 학교로 돌아와서 채점을 하는데...

엌ㅋㅋㅋㅋ 개꿀잼 올림피아드자너~

 

시험을 끝나고 대략 한 3일정도? 뒤에 답지가 나왔다.

내 기억상으로는 그 답지가 나왔다는 사실을 안 때가 딱 청소시간이었던 것 같다.

아니었나? ㅎㅎ;;

 

아무튼 친구들한테 채점을 해 보라고 막 말한 뒤에 채점을 하려도 답지를 연 순간

경악을 금치 못했는데...

 

 

 

그 당시 봤던 정답표;;

이게 말이 되는 정답표인지 모르겠다.

그냥 대충 보더라도 알겠지만;;

정답 없음이 3개고

정답이 두개인것도 하나 있네? ㅎㅎㅎ....

 

사실 정답표가 나오기 전에도 어느 정도 시험이 개판이었는지 알았기 때문에 그렇게까지 놀랍지는 않았으나

이렇게까지 심각할 줄은 몰랐다.

채점 당시 마냥 웃기기만 하더라.

내가 어떤 문제를 맞았는지 틀렸는지 볼 겨를도 그 당시는 없었다.

그냥 "아... 그렇구나? ㅋㅋㅋㅋㅋㅋㅋ 정답이 없으면 뭐지? 맞은거겠지? ㅋㅋㅋㅋㅋㅋ"

라는 생각만 들더라.

 

 

그러고 나서 나중에 기숙사로 돌아가서 내가 틀린 문제들을 보기 시작했는데...

일단 6번 문제가 나는 뭔 문제였는지 채점 당시엔 기억 안났는데

기숙사 돌아가서 보니깐 시험때 다 풀고 나서 답이 없길래 당황했던 그 문제더라.

그렇다.

내가 잘못 풀었던 게 아니라, 답이 진짜로 없었던 거다.

마냥 웃기더라 ㅋㅋㅋㅋ;; 초반엔 그거 한문제만 붙들고 있었는데...

근데 이건 시작에 불과했다.

 

 

12번.

4팀이 한 조를 구성하여 한 팀이 같은 조 내의 다른 모든 팀과 한번 씩만 대결하는 리그 방식으로 축구 경기를 하여 상위 2 팀을 선발하려고 한다. 한 경기에서 이길 경우 승점 3점, 무승부일 경우 승점 1점, 질 경우에는 승점이 0점인 리그경기가 다 끝났을 때, 3위 팀이 가질 수 있는 최대의 승점은 얼마인가? 단 승점이 같을 경우에는 골 득실 등을 따져 순위를 가리며, 각 팀의 골득실차는 모두 다르다고 가정한다.

① 3  ② 4  ③ 5  ④ 6  ⑤ 7

 

한번 풀어보는 것도 나쁘지 않을 것 같다. 그렇게 어려운 문제도 아니니...

 

 

이 문제를 풀 때, 난 당연히 4번이라고 생각하고 쉽게 넘어갔다.

승승패 / 승승패 / 승승패 / 패패패

이러면 총 승패수 각각 6회씩이니까 3등 팀도 6점을 얻을 수 있지 않은가?

애초에 이런 일들은 실제 스포츠 세상에도 흔히 일어나는 일이다.

 

근데 위에 사진을 보면 알겠지만 답이 3번이라네?

기숙사 침대에 누워서 그걸 보고 나서 어이가 털리더라.

보통 이렇게 답이 틀리면 "아.. 그렇구나.. 할텐데"

워낙에 문제가 많던 시험이어서 그런지 "뭐래는거냐 얘는?" 하는 느낌이었다.

그리고;

https://www.fifa.com/tournaments/archive/mensolympic/sydney2000/matches/index.html

ㅇㅇ.. 답은 3번이 맞았던 것이다.

주최측에서는 단순 정답 오기라는데

좀 삐딱하게 보면 출제진조차도 문제의 답을 모르고 문제를 낸 것이고,

아무리 잘 봐줘도 국가 공인 올림피아드 시험을 보는데 답지에 정답 오기를 내는 실수를 범한 것이다.

 

이떄쯤부터 이 시험은 완전히 망했다는 것이 느껴졌다.

그냥 답이 없다.

그대로 그냥 답지를 꺼버리고, 그냥 인터넷에서 무슨 얘기들이 오가나 궁금해서 검색이나 해봤다.

 

그 중에서 내 기억 상에 가장 웃겼던 것들을 좀 보자면...

 

초등부 8번.

0에서 6까지의 자연수를 한 번씩만 사용하여 만들 수 있는 세 자리의 자연수는 모두 몇 가지인가? 

① 180  ② 190  ③ 200  ④ 210  ⑤ 220

일단, 초등학교에서 (사실 고등학교까지 모두... 현대수학 배우기 전 까지는 모두 다..) 자연수는 1 이상의 정수를 의미한다.

그러니까, 초등학생이건 중학생이건 고등학생이건 모두 0은 자연수가 아닌 걸로 배우는데

0에서 6까지의 자연수는 대체 뭘까?

음... 고민을 해 보도록 하자...

 

 

초등부 14번.

다음 프로그램의 출력 결과는 무엇인가? 

int x = 9, y = 11;
if (x < 10)
  if (y > 10)
    printf("A");
  else
    printf("B");
printf("C");

① A  ② AB  ③ BC  ④ AC  ⑤ ABC

 

 

초등부 24번.

x=9, y=11일 때, 다음 프로그램의 출력 결과는 무엇인가? 

if (x < 10)
if (y > 10)
  printf("A,");
else
  printf("B,");
printf("C");

① A,  ② A,B,  ③ B,C  ④ A,C  ⑤ C

 

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

저거 둘다 초등부 동일 년도 문제다.

아무래도 들여쓰기랑 ,(comma)가 들어가면 아예 다른 문제가 되는듯하다.

아니 대체 어떻게 동일한 시험지에 동일한 문제를 출제할 수 있는지 모르겠다.

아니 진짜로 어떻게... 말이 안나온다 ㅋㅋㅋㅋ

 

 

고등부 49번.

다음 프로그램의 출력 결과는 무엇인가?

#define INT_MAX 2147483647
#define abs(x) (x<0) ? x*-1 : x
int f(char *D)
{
  int n = 14;
  int B[14][14];
  bool A[14][14];
  int i, j, k, m;
  for (i = 0; i<n; i++) {
    A[i][i] = true;
    B[i][i] = 0;
  }
  for (m = 1; m <= n; m++) {
    for (i = 0; i<n - m + 1; i++) {
      j = m + i - 1;
      if (m == 1) A[i][j] = A[i][j];
      if (m == 2) A[i][j] = D[i] == D[j]);
      else A[i][j] = (D[i] == D[j]) && A[i + 1][j - 1]);
      if (A[i][j] == true) B[i][j] = 0;
    else {
      B[i][j] = INT_MAX;
      for (k = i; k <= j - 1; k++)
        B[i][j] = B[i][j] < (B[i][k] + B[k + 1][j] + 1)? B[i][j] : (B[i][k] + B[k + 1][j] + 1);
      }
    }
  }
  return B[0][n - 1];
}

int main()
{
    char D[] = "ababbbabbababa";
    printf("%d", abs(f(D)));
    return 0;
}

이것도 정말 답이 없었던 것이 뭐냐면,

코드 자체가 틀린 코드였다.

 

우선, 코드 중간에 괄호가 하나가 없어서 컴파일조차 되지 않는다.

그렇다. 주최측에서 코딩문제를 컴파일도 안돌려보고 문제를 낸 것이다.

뭐? 컴파일 해본 다음에 실수로 괄호 하나를 빠뜨린거 아니냐고?

아니, 실행을 안 시켜본게 확실하다.

 

왜냐하면 어떻게 괄호를 고쳐서 코드를 컴파일 하더라도,

답이 INT_MAX 인 2147483647로 나오기 때문이다.

이정도면 코드 실행 한번도 안 해 본게 느껴지지 않는가?

(그냥 저걸 답으로 쓰면 안되냐고? OMR카드에 2147483647를 쓸수 있겠는가???)

아니 대체가 어떻게 된게 코드 문제에 코드 실행도 안시켜보고 문제를 내는지 이해가 안될 따름이다.

 

 

 

 

 

아무튼..

수없이 많은 문제 오류들과 정답 기입 오류(;;) 들 끝에, 결국 정보 올림피아드 주최측은 사과문을 올리기에 이른다.

 

Apple sentence;

 

그리고 올라온 이의 신청 검토 의견서가 나오게 된다.

그리고 하는 변명들은 가히 전설적이라 할 만 한데,

그 중 몇가지만 써보자면....

 

 

<초등부 8번 문항>

‘0이 자연수에 속하는가에 대한 이의 제기가 많았으며, 수학교육과 교수와 현장 교사 등의 의견을 참조하고 정보과학계의 입장을 반영하였습니다.

 

현대 수학에서는 일반적으로 자연수에 0이 포함되는 것에 대해 두 가지의 다른 정의가 함께 사용되고 있습니다. 일반적으로 정수론에서는 0을 제외한 양의 정수를 사용하며, 집합론과 컴퓨터과학(전산학)의 이산수학에서는 0을 포함한 음이 아닌 정수를 자연수로 정의하여 사용하고 있습니다. 이러한 혼란 때문에 통상적으로 대부분의 책과 논문 등에서는 자연수에 대한 정의를 먼저 제시하고 내용을 전개해 나가고 있습니다. 본 문항의 지문에서도 ‘0에서 6까지의 자연수라고 먼저 제시하였고 또한  0을 자연수에서 제외하고 문제를 푼 경우에 해당하는 답안이 보기에 존재하지 않으므로 혼란의 여지는 없습니다.

 

초등부 전체 응시자의 73.8%‘0을 자연수라고 가정하고 문제를 풀어 보기를 선택하였으며, 나머지 학생은 전혀 관계없는 오답을 선택하였습니다. 다만, 0이 자연수가 아니라고 가정하여 이 문제에 대한 답변을 아예 하지 않을 학생이 있을 가능성도 검토하였으나 전국대회 진출 여부에는 영향을 주지 않는다는 사실을 확인하였습니다.  

 

 

?

???

?????????????

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

초등부 문제에서 현대 수학에서 자연수의 정의와, 집합론과 컴퓨터과학의 이상수학의 자연수에 대한 정의를 알고 있어야 하나?

또, '0에서 6까지의 자연수' 라고 기입되어 있으면 그게 자연수의 정의를 제시한 것인가?

뭐지? 미친건가??

그럼 대부분의 책과 논문 등에서 "0 이상의 자연수에 대하여" 라는 한 문장만 존재하면 자연수의 정의를 다 한것인가?

정말 주최측의 설명이 이해가 잘 가고 납득이 될 따름이다.

 

 

44번.

한 컴퓨터회사의 구성원은 사장 1명과 직원들로 구성되어 있고, 회사의 각 직원은 최대 3명까지의 부하직원을 둘 수 있다. {X, Y, Null}의 표현은 두 명의 부하직원 X와 Y가 있으며, 없는 경우는 Null로 나타낸다. 또한 부하직원이 하나도 없으면 {Null, Null, Null}로 나타낸다. 만일 그 컴퓨터회사 모든 직원의 조직도에서 Null의 총 개수가 10인 경우, 최소 직원 수는 몇 명인가? 단, 사장의 직속상관(바로위의 상관)은 없고, 직원들의 직속상관은 1명이다.

① 2  ② 3  ③ 4  ④ 5  ⑤ 6

 

화두는 "사장도 직원에 속하는가?" 였는데,

그에 따른 주최측의 설명은 다음과 같다:

 

<중등부 8번 문항 / 고등부 44번 문항>

본 문항에서 회사의 구성원을 사장 1명과 직원들로 분리하여 설명하였기 때문에 사장은 직원에 포함되지 않고 {X, Y, Z}형식은 직원들에게만 해당됩니다. 따라서 직원들의 조직도에서 Null 개수가 10개를 만족하는 최소 직원의 수를 도출할 수 있습니다.

 

???????????

????????????

회사의 구성원을 사장 1명과 직원들로 분리하였기에 사장은 직원이 아니라고?

그럼 문제에서 "각 직원은 최대 3명까지의 부하직원을 둘 수 있다." 는 뭐지?

사장은 직원이 아니니깐 부하직원을 두면 안되는데? 아니 애초에 사장 얘기는 왜한걸까?

 

아니 그보다도, 사장 1명과 직원들로 분리하여 설명하면 사장은 직원이 아니라는건가?

동물들과 닭 한마리 이러면 닭은 동물이 아닌건가? 난 잘 모르겠는데;

아니 애초에 저게 사장 1명과 직원들로 분리한거 맞나? 그렇다기엔 너무 문장력이 떨어지는 느낌인데;;

 

 

 

+나는 어차피 모르고 풀어서 할말 없지만, 아무튼 이해가 안되던 문제가 11번이었다.

 

11번.

n 개의 수들을 가지고 완전 이진트리를 만들 경우 이 트리의 높이는 얼마인가?

 

① log2n 의 버림 값 ② (log2n)3 의 버림 값 ③ (log2n + 1) 의 버림 값 ④ (log2n - 1) 의 버림 값 ⑤ (log2n)2 의 버림 값

(log뒤의 2는 로그의 밑이다.)

 

이 문제에서, 완전 이진트리의 높이를 정의하지 않고 그냥 넘어가고 있다.

노드 한 개만 있는 상태는 높이가 몇인걸까?

이에 대한 해답은,

 

<고등부 11번 문제>

완전 이진트리는 루티드 트리(rooted tree)입니다. 루티드 트리에서 레벨(level)이라는 개념은 기본 정의가 없고, 깊이(depth)와 높이(height)는 정의가 있습니다. 깊이는 노드에 대해서만 정의되고, 높이는 노드, 트리 모두에 대해서 정의되는데 주어진 트리의 높이는 그 트리의 루트노드의 높이로 정의됩니다. 노드의 높이는 그 노드에서 연결된 가장 멀리 떨어진 단말노드(leaf node)까지 존재하는 가장 긴 경로에 존재하는 간선들의 수로 정의됩니다. 따라서 본 문항에서 노드가 1개일 경우 높이는 0입니다. 위의 정의에 따라 정답을 도출할 수 있습니다.

(참고자료) Introduction to Algorithms, MIT press, 3rd edition, page 1177

 

 

그렇단다.

아니 그런데 애초에, "공교육 기반 문제 출제"를 약속해 두고,

이의신청 검토 의견서에 참고자료랍시고 MIT에서 발행한 책을 두는건 이해가 잘 가지 않는다.

뭐하자는 거지?

 

 

+ 49번 단답식 문항의 답변.

<49번 단답식 문항>은 지문에 제시된 C코드에서 ‘(’ 부호 하나가 빠지게 된 편집오류에 해당합니다. 그 부호가 없더라도 정답을 유추할 수 있었겠지만, 코드오류가 명확하다고 판단하여 정답없음으로 처리하였습니다.

 

'(' 부호 하나가 빠진게 문제가 아니고 코드 자체의 오류가 문젠데 꼭 '(' 부호 하나 없어서 정답없음 처리한 듯이 써놨다.

놀라울 따름이다.

 

 

 

그리고, 그렇게 나는 그렇게 인생 첫 정올을 망치게 되었다.

나는 대략 커트라인에서 5점정도 떨어진 점수를 받고 전국 진출도 떨어지게 되었다.

하지만 본선 진출은 사실 시험 치기 전부터 알고 있었기에 별로 기분이 나쁘진 않았는데,

인생 첫 올림피아드를 나갔는데 이따구로 시험이 출제된 것 자체가 많이 억울하고 씁쓸했다.

 

 

추가하자면, 사실 전국대회 본선도 문제가 좀 많았다고 한다.

채점이 심하면 1시간까지도 미뤄졌다는 얘기가 있는데,

나는 전국대회에 나가보지 못했기 때문에 따로 할 말이 없다.

그냥 나무위키 가서 보도록 하자 ㅎㅎ...

 

....이것으로 2018년 정보올림피아드 시험을 봤던 후기를 끝내도록 하겠다.

뭔가 시험 후기가 아니라 문제까기에만 급급했던 것 같은데,

사실 시험 보면서, 그리고 시험이 끝나고 한 생각들이 온통 저런것들 뿐이어서....

 

나중에 시간이 된다면 어제 치뤘던 2019 정올 관련 후기도 올리도록 하겠다.

? 작년에 저렇게 개판을 쳤는데, 올해는 어떻게 잘 했냐고?

뭐, 그럭저럭 잘 했다.

1교시 까지는 ㅋ

 

아무튼 이에 관련된 후기는 나중에 올리도록 하겠다.

ㅃㅃ

'잡담' 카테고리의 다른 글

크리스마스  (0) 2019.12.26
정보올림피아드 보고 온 기념) 2018 정보올림피아드 썰 - 1편  (1) 2019.05.04

* 쓰다 보니 너무 길게 써져서 2편으로 나누겠습니다. 사실 올해 정올 썰 풀려했는데;;

 

 

세줄요약

1. 작년에 엄청 설레서 정올 치러감.

2. 그런데 시험 치는데 몬가 좀 이상했음.

3. 엌ㅋㅋㅋㅋ 이게 올림피아드냐??? ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

 

KOI (물고기 아님) (작가 이름 아님)

 

작년, 디미고 입학 이후 꼭 한번 가보고 싶었던 정보올림피아드를 나갔었다.

그 당시, 말 그대로 배운 것도 거의 없는,

그냥 독학으로 딱 간단한 DP 짜는 법만 배운,

학교에서도 C언어 기초만 배운 정도의 상태에서 시험을 보러 갔다.

 

물론 그 당시까지만 해도 경시 예선에 프로그래밍 문제도 없어서

가벼운 마음으로, 그냥 시험을 치러 갔었다.

그런데...

 

https://namu.wiki/w/%ED%95%9C%EA%B5%AD%EC%A0%95%EB%B3%B4%EC%98%AC%EB%A6%BC%ED%94%BC%EC%95%84%EB%93%9C#s-3.4

(나무_위키) 

 

 

작년 정올이 개똥이었다.

개인적으로 그 때 기억을 되살려서 그 때 어땠는지 대충 말해보겠다.

 

https://www.acmicpc.net/jungol/2018/3

작년 정올 문제와, 그에 대한 의견들 (이라고 쓰고 오류까기 댓글)

 

 

 

처음 시험장에 들어가서 시험을 보려고 할때 까지만 해도 마냥 설렜었다.

시험 당시의 작년도, 제작년도 문제들도 다 풀어봐서

그런 식으로 문제가 출제될 줄 알고,

또 그 정도로 재밌게 문제가 나올줄 알았다.

그리고 사실 처음에는 그렇다고 생각했다.

 

그런데

6번문제를 풀다보니 답이 안나오는 것이었다.

난 솔직히, 내가 잘못푼 줄 알았다.

어떻게 푸는지 몰라서 막 풀었는데

답이 안나오니 시간은 끌리고 답답해 죽겠고...

결국 그냥 내가 1 잘못 더했나보지 하고 5번을 체크하고 넘어갔었다.

그런데 시험 끝나고 보니까 그게 문제오류였다네??

정답이 없는게 맞다네??

 

아무튼... 그 당시엔 그런거 몰랐으니까 넘어가고

 

11번 문제.

"n 개의 수들을 가지고 완전 이진트리를 만들 경우 이 트리의 높이는 얼마인가?"

그 당시 기준 약 3개년 기출을 풀어보면서, 이런 문제는 처음 봤다.

2018년 당시 정보올림피아드는 일반인도 풀 수 있게 (전문 교육 안받아도 학교 교육으로도 풀 수 있게) 시험을 내겠다고 했다.

(난이도 개선) 경시대회 문제 난이도를 낮춰 구성하고, 보편적 공교율 기반의 코딩문제를 출제

그런데 지금까지 나온적도 없는 완전 이진트리 문제를 들고 왔다.

아까도 말했다시피, 나는 그 당시 완전 노베라 완전 이진트리가 뭔지 정확히도 몰랐다.

그래서 그냥 걸렀다. (나중에 또 나올 문제입니다.)

 

그리고 13번 문제.

보자마자 걸렀었다.

혹시 궁금할까봐 문제를 좀 써보자면,

 

"다음 표에서 X에 들어갈 수는 무엇인가?"

1 2 3 4 5
2 5 13 30  
3 13 42    
4 30   X  
5        

 

① 175  ② 235  ③ 280  ④ 344  ⑤ 388

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

진짜 솔직히 거를만 하지 않았나 싶다.

애초에 사고력이 얼마나 좋은지 대결하는 시험에서

저딴 문제를 낸다고?

 

심지어 저거 문제 진짜 그대로 쓴거다.

특정 규칙이 있다는 말 하나 없이 저렇게 나왔다.

저러면 대체 답을 어떻게 구하라는 건가?

그냥 까놓고 말해서, 왼쪽 위와 오른쪽 아래가 대칭인 표라고 해도 할 말 없지 않나?

대충 숫자 몇개 넣어보다가 때려쳤다.

 

그럼 규칙이 명확하면 또 모른다.

1 1 2 3 5 8 13 21 X 55 ...

에서 X에 들어갈 숫자는? 

 

이렇게라도 냈으면 거의 다들 별 말 없이 진행했을 텐데,

저 위의 저 표는 대체 뭘 보고 유추하라는 건지 모르겠다.

 

백준님의 댓글을 인용하자면,

 

"의도한 정답은 다음과 같다고 합니다.

칸 (i, j)에 들어있는 수는 (1, 1) ~ (i, j) 에 있는 수의 합

즉, (3, 3)이 42가 나오는 이유는 1 + 2 + 3 + 2 + 5 + 13 + 3 + 13 입니다."

 

 

캬...

와... 정말 너무 명확하고 일반적인 규칙이었어요!!! 대단합니다!!

 

..쓰다보니 화나서 문제 하나에 너무 길게 써버린 것 같다.

아무튼 이런 문제를 보자마자 정말 기가 차고 놀라워서 그냥 때려치우고 다음 문제로 넘어갔다.

 

 

14번.

"n 개의 수들을 가지고 최대 이진 힙 데이터 구조를 만들 경우 높이 h 에 위치하는 노드들의 최대 수는?"

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 보편적 ㅋㅋㅋㅋㅋ 공교육ㅋㅋㅋㅋㅋㅋㅋ 무슨 안드로메다에서 공교육 받았나??

보편적 공교육에서는 최대 이진 힙 데이터 구조와 완전 이진 트리를 배우나 보다.

정말 난이도가 개선되고, 또 공교육을 받은 학생들도 정말 풀 만하게 나오지 않았는가?

역시 초중고교 현직 교사가 문제 출제 및 검수위원으로 참여해서 그런지 더 훌륭해 보인다.

(심지어 이 문제에는 다른 이슈도 있었는데 그건 나중에...)

 

 

 

아무튼, 계속 문제풀이를 진행했다.

이 뒤쯤부터는 C언어로 코딩한 것을 분석하거나 하는 문제였는데,

문제가 내가 지금껏 보던 문제들과는 달랐다.

 

원래 아까 말했다시피, 문제들이 다들 되게 재밌었다.

풀다 보면 빡치는 문제들도 있긴 했지만 변별력 문제들만 그랬고,

다른 문제들은 곰곰히 생각하며 푸는 문제들이었는데...

 

20번.

다음 프로그램 중 주어진 문자열의 길이를 정확하게 출력하는 것은?

int i;
char s[] = "hello";
for(i=0; s[i]; ++i);
printf("A: %d ", i);
i=0;
while(s[i++]);
printf("B: %d ", i);
return 0;

① A 만 옳은 값을 출력한다

② B 만 옳은 값을 출력한다

③ A,B 모두 옳은 값을 출력한다

④ 모두 옳은 값이 아니다

⑤ 컴파일 에러가 발생한다

 

21번.

다음 프로그램의 출력 결과는 무엇인가?

char    str[] = "Welcome";
char* s = str;
while(*s)
printf("%c", *s++);

① Welcome   ② elcome   ③ 0   ④ Wel   ⑤ come

이게 왜 어떠냐고?

들여쓰기가 보이는가?

필자가 들여쓰기를 안 한 것이 아니다.

그냥 문제가 진짜로 저렇게 나왔다.

 

세상에 대체 누가 저따구로 코딩을 하는가?

열심히 곰곰히 생각해서 푸는 문제가 아니라, 

그냥 헷갈리라고 막 던져놓은 문제다.

아니 애초에 저런 문제는 나도 만들 수 있다.

사고력을 시험하겠다면서 무슨 들여쓰기도 안한 코드를 문제로 내는가?

저런문제가 한둘이 아니다.

 

 

 

27번.

다음 프로그램의 출력 결과는 무엇인가?

int num, temp1, temp2;
int A = 2;
int B = 12;
num = ((temp1 = B / A++) + (temp2 = B / ++A)) + ++B;
printf(“%d”, num);

① 20  ② 21  ③ 22  ④ 23  ⑤ 24

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

뭐가 문젠지는 딱 봐도 알겠지만 대충 나열하자면...

 

1. 이게 사고력이랑 무슨 상관이며,

2. 전/후위 증가를 물어보는 문제라고 하더라도 저따구로 코딩하는 사람은 아무도 없으며,

3. 심지어는 undefined behavior이기 때문에 어떻게 결과값이 나올지는 아무도 모른다. 심지어, 컴파일러에 따라 값이 다르게 나온다!

= 문제 질이 쓰레기다

 

이쯤부터 나는 무언가가 잘못되었다고 느끼고 있었다.

그러던 와중, 정확한 시기는 기억 안나는데

대충 중반이었으니 이때쯤 아니었을까 싶다.

갑자기 방송으로 오타 및 오기 방송을 하기 시작했다.

 

처음에는 "어라? 오타가 좀 있나보네" 하는 눈치로 오타를 고치기 시작했는데...

 

진짜 양심에 손을 얹고, 10~20문제 가량에 오타가 있었다.

장난이나 과장이 아니다.

첫 5문제정도는 "와 오타 많네 ㅋㅋㅋㅋ" 이러고 있었는데,

10문제정도 되니깐 "????? 뭐지 애내들 시험지 검수 안했나?" 하는 생각이 들더라.

진짜 고치면서 웃겨서 웃었었다.

다시 말하지만, 이거 국가 공인 올림피아드다.

일개 쪽지시험도 오타가 이렇게 많게는 안나온다.

 

더 충격적인 사실이 무엇이냐면,

이렇게 고치고도 시험이 끝날때 까지 정정해 주지 않은 오타들이 수두룩 빽빽 했었다는 것이다.

진짜 이쯤되면 답이 없다.

 

 

28번.

다음 프로그램의 출력 결과는 무엇인가?

int a = 3;
if (a = 4)
   printf(“A”);
else
   printf(“B”);
if (a = 0)
   printf(“C”);
else
   printf(“D”);

① AD  ② AC  ③ BC  ④ BD  ⑤ CD

 

 

엥? 이게 왜 문제냐고?

나도 처음엔 왜 문젠지 몰랐다.

근데, if문 안을 자세히 보면...

 

대입 연산자를 넣어쳐놨다.

아니 그래서 이게 대체 사고력 향상이나 그런거에 어떤 의미가 있는걸까?

이건 그냥 코드를 한줄한줄 아주 정성스럽게 읽어서 풀라는 의미 아닌가?

그냥 누구 눈썰미가 더 예리한가

틀린그림찾기 시합이 아닌가?

사실 처음엔 그냥 BD인줄 알았다가, 나중에 검토하다 답을 알게 되었다.

이쯤되면 한국눈썰미올림피아드로 이름을 바꿔야 된다.

 

 

29번.

다음과 같이 함수 f를 구현했을 때, f(5,12)의 값은?

int f(int m, int n) {
  if(n<=0 && m<=0) {
    return 1;
  }
  else {
    if(n >= m)
      return f(n-2,m)+f(n-3,m);
    else
      return f(n,m-3);
  }
}

① 73  ② 74  ③ 75  ④ 76  ⑤ 77

 

이건 그냥 간단히 짚고 넘어가겠다.

2점짜리 문제다.

이게 위의 28번 문제와 배점이 동일하다.

문제의 난이도가 같다고, 아니면 엇비슷하기라도 하다고 생각하는가?

본인의 생각에 맡기겠다.

 

 

그리고 본인이 이 시험이 매우, 굉장히, 엄청나게 이상하단걸 깨달은 문제가 바로 36번 문제인데...

36번.

a=1, b=0, c=-1 일 때, 다음 프로그램의 출력 결과는 무엇인가?

int i = 5;
if(a<b<c){
for(i--; i--; i--)
   printf(“%d ”, i);
} else {
for(i--; --i; i--)
   printf(“%d ”, i);
}

① 4 2 0   ② 3 1 -1 -3 5 ...   ③ 3 1   ④ 4 2 0 -2 4 ...   ⑤ 5 3 1

 

필자는 이 문제를 풀면서 진짜 어이가 너무 없었다.

if (a<b<c)라는 말도 안되는 undefined behavior를 사용한다.

아니 무슨;;; 저딴 개짓거리를 누가 실무에서 쓰고

또 누가 알고리즘 문제에 쓰는지 정말 궁금하기만 할 따름이다.

 

거기다가, 누가 대체 for문 안에 저따구로 쳐 써넣는가?

for (i--; i--; i--)

이딴거 쓰는거 본적 있는가?

이것도 다른 거지같은 문제들과 마찬가지로, 정말 실무에서 쓰면 바로 쫓겨나고, 애초에 쓸 일도 없는 문법으로,

그냥 간단히 문법 어거지로 꼬아서 답이 뭐가 나오는지 물어보는 셈이다.

게다가 저 문제, 들여쓰기도 이상하지 않은가?

재차 말하지만, 필자의 오기가 아니라

진짜로 시험에서 들여쓰기를 저따구로 해서 나왔다.

 

근데 사실 진짜 문제는 그게 아니다. (그래서 더 웃긴거다 ㅋㅋㅋㅋㅋ)

사실 시험장에서 필자가 문제를 풀 때, 저 쯤 되니 그냥 그러려니 하고 넘어갔다.

(사실 이때쯤에는 해탈했다. 문제의 질부터 오타 수두룩빽빽한거 까지...)

 

저 문제를 풀면, 답은 3 1 -1 -3 -5 ..... 가 나온다.

그러면 저 5개의 답지중에 무엇이 정답이겠는가?

2번이라고?

좀만 더 자세히 보자.

2번은 3 1 -1 -3 5 라고 적혀 있다.

저것도 마찬가지로 필자가 낸 오타나 오기가 아니다.

진짜 시험지에 저렇게 적혀 있었다.

 

하...

 

이 문제로 필자는 시험장에서 감독관에게 이건 너무 확실히 오타가 아니냐고 물어보았으나,

돌아온 대답은 "대답할 수 없고, 추후에 이의신청을 넣으시기 바랍니다" 였다.

그리고 답안이 애초에 아니어서 검토를 안한 4번도 잘 보기 바란다.

4 2 0 -2 4 ...  라고 쓰여 있다.

아니 애초에 답이 될 수도 없는데 답지에는 왜 집어넣은걸까? 이게 진짜 의도였을까?

아 뭐 질문했는데 주최측에서는 문제 없다하니...

진짜 답도 없다는 생각을 했다.

그냥 문제 질부터 답까지 죄다 틀려먹은 문제다.

 

 

43번 문제도 의견이 조금 달려있는데, 필자는 딱히 생각없이 풀어서... 그냥 문제가 왜이렇게 더러운가 생각하며 풀었었다.

 

 

44번.

 

한 컴퓨터회사의 구성원은 사장 1명과 직원들로 구성되어 있고, 회사의 각 직원은 최대 3명까지의 부하직원을 둘 수 있다. {X, Y, Null}의 표현은 두 명의 부하직원 X와 Y가 있으며, 없는 경우는 Null로 나타낸다. 또한 부하직원이 하나도 없으면 {Null, Null, Null}로 나타낸다. 만일 그 컴퓨터회사 모든 직원의 조직도에서 Null의 총 개수가 10인 경우, 최소 직원 수는 몇 명인가? 단, 사장의 직속상관(바로위의 상관)은 없고, 직원들의 직속상관은 1명이다.

 

 

자, 자...

사장은 직원일까? 아닐까?

재밌는 점은, 사장을 직원으로 생각하면 문제의 답은 나오지 않는다.

그러므로, 사장은 직원이 아니다.

그러면 이쯤에서 의문이 생긴다.

사장 언급은 왜 한걸까?

사실 사장 언급 안해도 그냥 풀리는 문제를, 굳이 사장 언급을 해놓고 앉았다.

왜인지는... 나도 모르겠다. 문제를 꼬는 것도 아니고... 그냥 일부러 문제 애매하게 내는거에 맛들렸나?

 

 

 

이 이후부터는 솔직히 생각없이 막 풀어서 문제를 풀 때 아무 생각도 안했다.

사실 49번 문제는 풀기 귀찮아서 대충 풀고 거른 것도 있다.

 

 

 

아무튼 그렇게 시험을 마치고 집으로 돌아왔다.

처음 보는 정올 시험인데 이렇게 마치고 돌아온게 조금 짜증나고 억울한 면도 있었지만,

그래도 시험 마치고 돌아오는 길에는 기분이 어느 정도 괜찮았던 것 같다.

 

그리고 나서 대망의 답 공개일이 다가오고....

학교에서 친구들과 가채점용으로 써 온 답안지로 채점을 하게 되는데...

 

...쓰다 보니 너무 길어진 관계로 답 공개 이후는 2편에서 계속하도록 하겠다.

 

'잡담' 카테고리의 다른 글

크리스마스  (0) 2019.12.26
이미 어제 하나 썼던 기념) 2018 정보올림피아드 썰 - 2편  (4) 2019.05.05

+ Recent posts