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

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

강의자료/정보영재

정보올림피아드 2017년 지역대회 예선 중등부 18번 문제 풀이

원당컴퓨터학원 2018. 1. 11. 10:28

2018년 새해가 되면서 저에게는 또다른 책임감이 주어지네요.^^


다름 아닌 저를 믿고 따라와 주는 학생들이 정보올림피아드라는 대회를 고대하고 있기 때문이랍니다.


이 학생들이 모두 좋은 성과가 나와 주면 저에게는 너무나 감사한 일이지만...


세상일이라는것이 모두다 제 마음 같지만은 않다보니 마음의 짐이 무거워 질수 밖에 없네요.


그래도 제가 해 줄수 있는 것은 학생들이 최선을 다해서 자신이 준비한 노력 만큼의 성과는 나올 수 있게 준비를 시켜 주는것이 제 역할이 아닌가 싶어요.


오늘은 작년에 출제된 지역대회 예선 중등부 18번 문제를 풀어 보도록 하겠습니다.


문제는 다음과 같습니다.


 

  CC++ 언어로 작성된 아래 식들 중에서값이 다른 것은 무엇인가?

      ①    373&1<<1 ② 373&1<<3 ③ 373&1<<5 ④ 373&1<<7 ⑤ 373&1<<9

    



2017년에는 계산할때 우선순위 부분에 해당하는 부분이 두문제나 출제 되었네요.


위의 문제에서 & 와 << 연산의 우선 순위를 묻는 문제 이거든요...


처음 접하게 되면 순간적으로 & 연산을 먼저 계산하고 << 연산을 하게 될 수가 있는데요.


이런 문제는 혹시라도 우선순위를 잊었다고 해도 그렇게 계산했을때 5개의 정답이 모두 다른것이라는 것을 금방 확인할 수가 있기 때문에 << 연산이 먼저 계산 되어야 한다는 것을 쉽게 확인 할 수가 있었습니다.


이 문제를 풀면서 연산할때 우선 순위를 한번 살펴 보겠습니다.

우선순위는 크게는 산술연산 -> 관계연산 -> 논리연산 으로 계산이 됩니다.


아래 표에서는 더욱더 세분화 해서 살펴 볼수가 있을것 같은데요. 


1순위에서는 소괄호가 가장 먼저일것입니다. 그것을 제외하면 자기 자신의 내부를 가르키는 배열 [], 간접접근 ->, 직접접근 . ,등이 있을수 있겠구요... 예상외로 ++,-- 처럼 후위증가 후위감소가 1순위에 랭킹이 되어 있네요. 전위증가,전위감소 가 더 빠를 줄 알았는데요... 

하지만 전위증가와 후위증가를 동시에 같이 사용할 일은 없기 때문에 헷갈릴 일은 없을것 같습니다.


2순위에서는 전위증가,전위감소,sizeof,비트연산 Not(~), 논리 Not(!), 부호(+/-), 주소연산(&),포인트(*) 등이 있습니다. 

논리 연산이 우선순위가 낮다고 이해하고 있는데... 여기서 논리 Not 은 제외가 되는 군요.


3순위,4순위에서 산술연산이 있구요.

5순위에 쉬프트연산(<<,>>) 이 있습니다.

6,7순위에 관계연산

8순위에 비트연산

9순위에 논리연산

10순위에 삼항연산

11순위에 대입연산입니다.


산술연산->쉬프트연산->관계연산->비트연산->논리연산 식으로 알아 두면 좋을것 같습니다.


우선순위를 알아 보았으니 문제를 풀어 보도록 하겠습니다.


373 을 이진수로 표현하면 101110101 입니다.

1) 1<<1 은 10

2) 1<<3 은 1000

3) 1<<5 은 100000

4) 1<<7 은 10000000

5) 1<<9 은 1000000000

모두 연산을 하면  0 인데 3) 인 경우에만 100000 이 됩니다.


따라서 정답은 3번이 되겠네요.


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





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