문제
N개의 정수로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 N-1까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼(jolly jumper)라고 부른다. 예를 들어 다음과 같은 수열에 서 1 4 2 3 앞 뒤에 있는 숫자 차의 절대 값이 각각 3 ,2, 1이므로 이 수열은 유쾌한 점퍼가 된다. 어떤 수열이 유쾌한 점퍼인지 판단할 수 있는 프로그램을 작성하라.
입력설명
첫 번째 줄에 자연수 N(3<=N<=100)이 주어진다. 그 다음 줄에 N개의 정수가 주어진다. 정수의 크기는 int 형 범위안에 있으며, 인접한 두 수의 차도 정수형 범위에 있습니다.
출력설명
유쾌한 점퍼이면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력한다.
입력예제
5
1 4 2 3 7
출력예제
YES
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
//freopen("input.txt", "rt", stdin);
int n, i, position, previous, now;
scanf("%d", &n);
vector<int> check(n);
scanf("%d", &previous);
for(i=1; i<n; i++){
scanf("%d", &now);
position = abs(previous-now);
if(position>0 && position<n && check[position]==0){
check[position] = 1;
} else {
printf("NO");
return 0;
}
previous = now;
}
printf("YES");
return 0;
}
첫번째 입력값을 받아놓고 나머지를 차례로 받아서 뺀후에 절대값으로 check벡터안에 값이 있는지 확인 후 없다면 해당 postion인덱스에 1을 대입하고 조건에 거짓이라면 NO를 출력한후 프로그램을 종료하는것입니다.
눈여겨볼건 아무래도 abs라는 함수입니다. 절댓값을 자동으로해주는건데 이를 사용하기위해서는 <algorithm>을 include해야한다. 저번에 사용했던 exit(0)또한 <algorithm> 헤더파일에서 사용했던것입니다.
선생님은 return 0; 으로 종료했는데 exit(0); 으로 해보니까 100점 나오는건 같습니다. 디테일적으로는 다를순있지만 프로그램을 종료하는건 같겠죠???
나도 윾쾌하고싶어
'알고리즘 > it 취업을 위한 알고리즘 문제풀이' 카테고리의 다른 글
26. 마라톤 (0) | 2021.05.19 |
---|---|
25. 석차 구하기 (0) | 2021.05.19 |
23. 연속 부분 증가수열 (0) | 2021.05.18 |
22. 온도의 최대값 (0) | 2021.05.18 |
21. 카드게임 (0) | 2021.05.17 |