2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료/정보영재

2017년 정보올림피아드 예선 초등 22번 문제 분석

원당컴퓨터학원 2017. 7. 8. 16:27

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


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


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


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


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


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


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

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


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


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 가 됩니다.


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


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


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




 



사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기