강의실/정보영재

바깥에 비가 내리고 내부는 습기가 꽉 차 있어서 후덥지근한 날이네요.^^


이번주와 다음주가 중학생들 기말고사 시험기간이라서..


대부분의 학생들이 기말고사 준비 하느라 학원에 안 나와서 오늘따라 많이도 한가 하네요.^^


그나마 오전에 우리 학원의 든든한 기둥이 얼굴 비춰 줘서 마음이 너무 편안해 지는데요...


그 학생은 알고리즘만 잘하는게 아니라 영어도 잘하는가 봅니다.


엊그제 원장님이 학교에 갔다가 그 학생이 영어 최우수상 받은 내역을 보았다네요.^^(보통 수학을 잘하는 학생이 영어를 잘 못한다는 제 인식이 있어서 인지 모르겠는데요)


그 학생 부모님은 어떻게 저렇게 아이를 잘 키웠을까? 존경심이 드는 하루네요...

(사실 공부만 잘하는게 아니라... 그 학생을 보면 공부는 둘째고 성실함과 품성이 너무 이쁜 아이랍니다.^^)


오후에는 학생들도 없고 올해 정보올림피아드 예선 문제를 풀어 보게 되었는데요~


2017년 정보올림피아드 예선 초등 22번 문제입니다.


 

   char *A[5]={

    ">_>^^<_<",

    "o_O||O_o",

    "\\(<<)//",

    "@-;--'--",

    "~[,_,]:3"};


    int i,j,c=0;


    for(i=0;i<5;i++){

        for(j=0;A[i][j];j++){}

        if(j==8)c++;

    }

    printf("%d\n",c);



문제를 슬쩍 보면 5가 출력 되거든요.

A[5][9] 배열에 문자가 꽉꽉 차 있는 것처럼 보이거든요.


하지만 이렇게 쉽게 나오다니 하면서 5를 적는 순간 땡~~~ 종치는 소리를 듣게 됩니다.

문제는 A[2]행에 있는 "\\(<<)//", 입니다.

"\\" 에서 \ 은 이스케이프시퀀스라고 하며 특수문자로 \t 는 탭키를 \n 은 리턴키를 \\ 은 '\' 을 가르키게 되거든요.

그래서 "\\" 을 두개로 세는 순간 틀리게 됩니다.

그래서 정답은 4가 출력 됩니다.


그 외의 이스케이프시퀀스를 정리해 보면 다음과 같습니다.


\b 백스페이스(앞으로 삭제)
\r 커서 위치를 맨 앞으로 이동
\n 엔터키
\v 세로탭
\' 작은따옴표
\" 큰따옴표
\? 리터럴 물음표




위의 문제를 분석해 보면 다음과 같습니다.


    char *A[5]={

    ">_>^^<_<",

    "o_O||O_o",

    "\\(<<)//",

    "@-;--'--",

    "~[,_,]:3"};


이문장은 다음과 같이 A[5][9] 배열을 잡아서 다음의 데이터를 초기화 합니다.

>

 _

 >

 ^

 ^

 <

 _

 <

 '\0'

 o

 _

 O

 |

 |

 O

 _

 o

 '\0'

 '\'

 (

 <

 <

 )

 /

 /

 '\0'

 

 @

 -

 ;

 -

 -

 '

 -

 -

 '\0'

 ~

 [

 ,

 _

 ,

 ]

 :

 3

 '\0'


for(i=0;i<5;i++){

        for(j=0;A[i][j];j++){}

        if(j==8)c++;

    }


이 문장에서 

for(j=0;A[i][j];j++){} //이 문장은 A[i][j] 가 NULL(0,0x00,'/0') 이 아닌동안 j를 증가 시키고 빠져 나오게 됩니다.

따라서 i값이 0,1,3,4 인 경우에는 j가 8에서 끝나게 되어 c가 증가 되고요.

i값이 2에서는 j가 7이 되어 끝나게 됩니다.


따라서 c의 값은 4 가 됩니다.


언제 부터인가 조금만 신경을 안쓰게 되면 프로그램을 어느정도 한다고 하는 사람도 실수를 할 수 있게 유도하는 문제가 종종 출제되고 있네요...


학생들이 이런 부분을 세심하게 신경써서 좋은 결과를 낼 수 있게 알려 줘야 하니 제가 더 많이 공부해야 겠다는 생각 밖에 안 드네요~~~


정보올림피아드 문제 풀이 리스트 정리




 



이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호 | 원당컴퓨터학원
도움말 Daum 지도
6 0
  • 청결원 2017.07.10 07:10 신고    

    잘 보고 갑니다 한주 시작 잘하세요

  • 버블프라이스 2017.07.10 07:12 신고    

    오, 문제 해석도 해주시네요?
    저는 먼가 해당 내용에 대해 학습이 안되있어서 어렵네요^^;
    오늘은 전국적으로 비가 온다고 합니다. 출근하실때 우산 챙기시는것 잊지마시고요
    기분 하루 되세요

    • 원당컴 2017.07.10 10:01 신고  

      감사합니다... 오늘 정말 비가 많이 오네요... 덥고 습한 날씨에 건강 잘 챙기세요.^^

  • 핑구야 날자 2017.07.10 07:56 신고    

    코딩을 배우는 아이들에게 재미있는 문제네요

    • 원당컴 2017.07.10 10:04 신고  

      알고리즘쪽은 퀴즈를 좋아하는 학생들이 좋아하는 학문이예요.^^