본문 바로가기

정보올림피아드지역예선

정보올림피아드 초등 - 지역예선] 2009년도 30번문제

반응형

 

 

30.1에서 50까지의 서로 다른 숫자가 적혀 있는 카드 50장이 쌓여있다. 위에서부터 i번째 위치에 어떤 숫자 카드가 있는지를 나타내는 배열이 입력으로 주어졌을 때, 숫자 p가 적힌 카드가 위에서 몇 번째 위치에 있는지를 출력하는 프로그램을 만들려고 한다.

 

㉠, ㉡에 들어갈 내용으로 각각 알맞은 것은?

㉠ : b[a[i]] = a[i];

    ㉡ : a[b[p]]

㉠ : b[a[i]] = i;

    ㉡ : a[b[p]]

㉠ : b[i] = a[i];

    ㉡ : b[p]

㉠ : b[a[i]] = a[i];

     ㉡ : b[p]

⑤  ㉠ : b[a[i]] = i;

     ㉡ : b[p]

 

문제풀이)

a 배열에는 다음과 같은 형태로 카드번호가 적힌 데이터를 가지고 있다.

 a

 배열번호(i)

 2

 4

... 

47 

 48

 49

50 

 카드번호

10 

 1

 8

... 

 4

 2

위와 같은 카드 데이터 배열을

b 의 배열에 카드번호 위치에 i 값을 입력 한다.

 배열번호(카드번호)

 1

 2

 3

 4

 5

 ...

 

 

 

 i

 2

 49

 3

 47

 50

 ...

 

 

 

찾을 카드번호 p 의 위치(i) 값을 찾는 경우 b[p] 의 값을 찾으면 원래 있던 위치(i)의 값을 찾을 수 있다.

 

따라서 ㉠ 에는 b[a[i]] = i  로 b 배열을 채운 후

㉡ 에는 b[p] 의 값을 출력 한다.

정답) 5번

 

반응형