😈 알고리즘/🍃 인프런 #1
🙏 24. Jolly Jumpers
Buᐢ༝ᐢy
2023. 3. 14. 18:00
it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비 - 인프런 | 강의
모든 문제에 대한 저작권은 위 강의에 있습니다.
문제
개의 정수로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 N-1까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼(jolly jumper)라고 부른다. 예를 들어 다음과 같은 수열에서 1 4 2 3 앞 뒤에 있는 숫자 차의 절대 값이 각각 3 ,2, 1이므로 이 수열은 유쾌한 점퍼가 된다. 어떤 수열이 유쾌한 점퍼인지 판단할 수 있는 프로그램을 작성하라.
입력 설명
첫 번째 줄에 자연수 N(3<=N<=100)이 주어진다. 그 다음 줄에 N개의 정수가 주어진다. 정수의 크기는 int 형 범위안에 있습니다.
출력 설명
유쾌한 점퍼이면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력한다.
입력 예제 1
5
1 4 2 3 7
출력 예제 1
YES
제출 코드
2023년 2월 10일
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
string CheckNumbers(vector<int> numbers)
{
int length = numbers.size();
vector<int> check(length, 0);
for (int i = 1; i < length; i++)
{
int dif = abs(numbers[i] - numbers[i - 1]);
if (dif > 0 && dif < length && check[dif] == 0)
check[dif]++;
else
return "NO";
}
return "YES";
}
int main()
{
int N = 0;
cin >> N;
vector<int> numbers;
for (int i = 0; i < N; i++)
{
int temp = 0;
cin >> temp;
numbers.push_back(temp);
}
cout << CheckNumbers(numbers);
return 0;
}
풀이
절대값으로 만드는 이유는 음수가 나올 수 있기 때문에 **abs(int value)**를 사용하여 절대값으로 만들어준다. 그리고 for문을 돌 때 범위를 잘 정하도록 한다. 앞 뒤 인덱스의 차를 냈을 때 0보다 커야하고 마지막 수보다 작아야 한다.