반응형
문제
2016년을 맞아 창원과학고등학교에서는 병설유치원을 만들었다. 유치원에는 보통 재미있는 놀이기구를 설치하는데, 공사가 덜 끝나서인지 아직 유치원에 놀이기구가 없는 채로 유치원이 운영되었다. 그래서 선생님들은 놀이기구를 대체하기 위해서 여러 가지 수학적인 퀴즈를 냈다.
이곳의 유치원생 중 한 명인 기수는 상품을 받고 싶었지만 퀴즈가 너무 어려워서 당신에게 퀴즈를 대신 풀어 달라고 도움을 요청했다. 퀴즈의 내용은 이렇다.
선생님들이 높이가 다른 여러 개의 막대기를 일렬로 세운다. 그리고 이웃한 막대기의 위쪽 끝은 서로 줄로 연결한다. 그러면 왼쪽에서 오른쪽으로 시선을 이동했을 때, 양쪽 막대기의 높이에 따라서 그 사이의 줄들이 올라가는 모양일 수도 있고, 내려가는 모양일 수도 있고, 가끔씩은 지면과 수평일 수도 있을 것이다.
이때 올라가는 줄과 내려가는 줄의 개수를 구하면 상품을 준다는 것이다. 막대기의 높이를 순서대로 불러준 기수는 얼른 퀴즈를 풀어 달라고 한다. 기수의 부탁을 들어주자.
입력
첫 번째 줄에 막대기의 수 N이 주어진다. (N≤10,000)
두 번째 줄에 N개의 막대기의 높이 H가 정수로 주어진다. (H≥0)
출력
올라가는 줄과 내려가는 줄의 개수를 출력하시오.
예제 입력
5 3 7 5 5 6
예제 출력
2 1
풀이
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, up = 0, down = 0;
scanf("%d", &n);
int *arr = malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < n - 1; i++)
{
if (arr[i] < arr[i + 1])
up++;
else if (arr[i] > arr[i + 1])
down++;
}
printf("%d %d", up, down);
}
동적 배열을 활용해 간단하게 해결
반응형