본문 바로가기
CodeSignal

Almost Increasing Sequence

by Doromi 2023. 11. 25.
728x90
반응형
주어진 배열에서 하나의 원소를 제거하여 배열을 증가 수열로 만들 수 있는지 여부를 확인하는 문제입니다. 여기서 증가 수열은 배열의 모든 원소가 비감소하는 수열을 말합니다.

예를 들어, [1, 3, 2, 1] 배열이 주어졌을 때, 한 개의 원소를 제거하여 [1, 3, 1]로 만들면 증가 수열이 됩니다. 따라서 이 문제에서는 한 개의 원소를 제거하면서 증가 수열을 만들 수 있는지 여부를 판단해야 합니다.

이 문제를 해결하는 알고리즘은 다양할 수 있으며, 주로 배열을 순회하면서 현재 원소와 다음 원소를 비교하면서 적절한 조치를 취하는 방식을 사용합니다. 다양한 조건을 고려하여 문제를 해결하는 것이 중요합니다.

 

public class Solution {
    public bool AlmostIncreasingSequence(int[] sequence) {
        int count = 0;

        for (int i = 0; i < sequence.Length - 1; i++) {
            if (sequence[i] >= sequence[i + 1]) {
                count++;

                if (count > 1) {
                    return false;
                }

                // 현재 원소를 뒤의 원소 중 하나와 비교하여 제거
                if (i > 0 && sequence[i - 1] >= sequence[i + 1]) {
                    sequence[i + 1] = sequence[i];
                }
            }
        }

        return true;
    }
}

 

sequence 배열을 순회하면서 감소하는 부분을 찾아내고, 해당 부분을 조절하여 증가 수열로 만들어나갑니다. count 변수를 사용하여 조정 횟수를 계산하고, 조정 횟수가 1을 초과하면 false를 반환합니다.
모든 조건을 통과하면 true를 반환합니다.
728x90
반응형

'CodeSignal' 카테고리의 다른 글

commonCharacterCount  (0) 2023.11.28
All Longest Strings  (0) 2023.11.27
matrixElementsSum  (0) 2023.11.25
Make Array Consecutive 2  (0) 2023.11.22
firstDuplicate  (0) 2023.11.17