문제1186--[기초-함수설계] 함수로 Lower bound 위치 리턴하기(C)

1186: [기초-함수설계] 함수로 Lower bound 위치 리턴하기(C)

[만든사람 : 전현석, 정종광(확인), 배준호(확인) (2017)]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

본 문제는 C 의 빠른 기초 학습을 위해 설계된 문제로서 C 코드 제출을 기준으로 설명되어 있습니다.
------

*주의사항 : 이 (함수 제출형) 문제는 함수 부분만 작성해서 제출해야 오류 없이 채점이 됩니다.
미리 작성되어있는 코드를 읽고 해석해서, 함수 부분만 작성해서 제출하면 됩니다.
작성한 함수의 테스트를 위해서는 제시된 코드를 복사해 사용하면 되고, 제출은 함수 부분만 하세요.

------

데이터가 오름차순으로 저장되어있는 배열에서
어떤 값보다 크거나 같은 값이 처음 나타나는 위치를 출력하시오.
(저장되어있는 값들이 입력된 값보다 모두 작다면 저장되어있는 데이터개수+1을 출력한다.)

단, 함수형 문제이므로 함수 lower_bound()만 작성하여 제출하시오.

예를 들어 1번 자리부터 10개의 데이터가 오름차순으로 저장되어있는 배열
2 3 5 7 9 11 13 17 19 23 에서
값 6 보다 크거나 같은 값이 처음 나타나는 위치는 4 이다.
값 24 는 저장되어있는 모든 값들보다 크므로 11 을 출력한다.


참고
lower_bound()는 이미 정렬 되어있는 데이터의 중간에 새로운 데이터를 삽입하려고 할 때,
기존의 정렬된 상태를 유지하면서 새로운 데이터를 넣을 수 있는 가장 빠른 위치를 의미한다.


[함수형 문제란??]
함수형 문제는 기본적인 main() 등은 미리 작성되어 있습니다.
미리 작성되어 있는 프로그램은 다음과 같습니다.

미리 작성된 프로그램을 복사해 붙여 넣은 후 함수 부분을 설계하여 작성해 넣고,
테스트 한 후, 함수 부분만 제출하세요.


[미리 작성되어있는 프로그램]
#include <stdio.h>

int n, k, d[1010];

int lower_bound(int);

int main()
{
  scanf("%d", &n);

  for(int i=1; i<=n; i++)
    scanf("%d", &d[i]);

  scanf("%d", &k);

  printf("%d\n", lower_bound(k));
}

입력 설명

첫 줄에 데이터의 개수(n)가 입력된다.
두 번째 줄에 n개의 오름차순 데이터(ki)가 공백으로 구분되어 입력된다.
세 번째 줄에 찾기를 수행할 값(k)이 입력된다.
(1<=n<=1000, -2147483648<=ki,k<=2147483647)

출력 설명

입력된 값보다 크거나 같은 값이 저장되어있는 처음 위치를 출력한다.
(입력된 값이 저장되어있는 모든 값보다 크면 n+1 을 출력한다.)

입력 예시 Copy

5
1 3 5 7 9
4

출력 예시 Copy

3

도움

기초100제(c)2 v1.0 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

출처/분류