[HackerRank]ZigZagSequence

jh Seo·2024년 2월 4일
0

HackerRank

목록 보기
8/15

개요

[HackerRank]ZigZagSequence

In this challenge, the task is to debug the existing code to successfully execute all provided test file

접근 방식

처음보는 유형의 문제다.
함수를 구현하는 방식이 아닌 이미 구현된 함수가 제대로 작동하도록 고치는 문제이다!
zigzagSequence란 수열이 있을 때, 수열의 중간까지는 오름차순,
수열의 중간부터 끝까지 내림차순을 형성하는 수열이다.

잘못 된 부분은

  1. int mid = (n + 1)/2-1;
    mid값이 (n+1)/2 가 아니라 (n+1)/2 -1 이어야 한다.

  2. int ed = n - 2;
    어차피 mid인덱스의 값과 n-1인덱스의 값을 swap하면
    n-1인덱스의 값이 제일 작은값이되어 건드릴 필요없다.

  3. ed = ed - 1;
    ed값을 줄여야함

전체 코드

void findZigZagSequence(vector < int > a, int n){
    sort(a.begin(), a.end());
    int mid = (n + 1)/2-1;
    swap(a[mid], a[n-1]);

    int st = mid + 1;
    int ed = n - 2;
    while(st <= ed){
        swap(a[st], a[ed]);
        st = st + 1;
        ed = ed - 1;
    }
    for(int i = 0; i < n; i++){
        if(i > 0) cout << " ";
        cout << a[i];
    }
    cout << endl;
}
profile
코딩 창고!

0개의 댓글