C#

[프로그래머스 힌트/답/해석] 다음에 올 숫자

Guk-blog 2024. 1. 30. 19:59
728x90
반응형

힌트

더보기

- 등차수열은 두 번째 항과 첫 번째 항의 차와 세 번째 항과 두 번째 항의 차가 같다

- 등비수열은 두 번째 항과 첫 번째 항을 나눈 값이 세 번째 항과 두 번째 항을 나눈 값과 같다

정답

더보기
public static int Solution73(int[] common)
{
    if(IsArithmeticSequence(common)){
        return common[common.Length-1] + (common[1] - common[0]);
    }else if(IsGeometricSequence(common)){
        return common[common.Length-1] * (common[1] / common[0]);
    }else{
        throw new ArgumentException("Error");
    }
}

static bool IsArithmeticSequence(int[] sequence){
    int commonDiff = sequence[1]-sequence[0];
    for(int i = 2; i < sequence.Length; i++){
        if(sequence[i]-sequence[i-1]!= commonDiff) return false;
    }
    return true;
}

static bool IsGeometricSequence(int[] sequence){
    int commonRat = sequence[1]/sequence[0];
    for(int i = 2; i < sequence.Length; i++){
        if(sequence[i]/sequence[i-1] != commonRat)return false;
    }
    return true;
}

해석

더보기
static bool IsArithmeticSequence(int[] sequence){

등차수열인지 확인하는 함수

int commonDiff = sequence[1]-sequence[0];

두 번째 항과 첫 번째 항의 차이를 저장

for(int i = 2; i < sequence.Length; i++){
                if(sequence[i]-sequence[i-1] != commonDiff) return false;
            }

반복문을 돌렸을 때 등차가 아닌 값이 나오면 false를 리턴한다

static bool IsGeometricSequence(int[] sequence){

 등비수열인지 확인하는 함수

int commonRat = sequence[1]/sequence[0];

 두 번째 항과 첫 번째 항을 나눈 값을 저장

for(int i = 2; i < sequence.Length; i++){
                if(sequence[i]/sequence[i-1] != commonRat)return false;
            }

반복문을 돌렸을 때 등비가 아닌 값이 나온다면 false를 리턴한다 

return common[common.Length-1] + (common[1] - common[0])

 등차수열이라면 마지막 항에 등차를 더해준다

return common[common.Length-1] * (common[1] / common[0]);

 등비수열이라면 마지막 항에 등비를 곱해준다

 

728x90
반응형