알고리즘/it 취업을 위한 알고리즘 문제풀이

24. Jolly Jumpers <algorithm>

고줭 2021. 5. 19. 11:37

문제

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