본문 바로가기
코딩 테스트/프로그래머스 (입문)

[C#][프로그래머스 >코딩테스트 입문] 다음에 올 숫자

by 스누ㅍl 2024. 7. 16.

프로그래머스 > 코딩테스트 연습 > 코딩테스트 입문 > 다음에 올 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/120924

 

📒 문제

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 2 < common의 길이 < 1,000
  • -1,000 < common의 원소 < 2,000
    • common의 원소는 모두 정수입니다.
  • 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
  • 등비수열인 경우 공비는 0이 아닌 정수입니다.

 

입출력 예

common result
[1, 2, 3, 4] 5
[2, 4, 8] 16

 

입출력 예 설명

 

입출력 예 #1

  • [1, 2, 3, 4]는 공차가 1인 등차수열이므로 다음에 올 수는 5이다.

입출력 예 #2

  • [2, 4, 8]은 공비가 2인 등비수열이므로 다음에 올 수는 16이다.

💻 소스코드

using System;
using System.Linq;

public class Solution {
    public int solution(int[] common) {
        
        int answer = common.Last();
        
        // 등비수열(geometric sequence)
        bool isGS;
        isGS = common[1] - common[0] == common[2] - common[1] ? false : true;
        
        if(!isGS) 	answer += (common[1] - common[0]); 	// 등차
        else 		answer *= (common[1]/common[0]);	// 등비
        
        return answer;
    }
}

 

참고 사이트

등차 등비 구분: https://school.programmers.co.kr/questions/41669
array 마지막 요소 접근: https://wjunsea.tistory.com/161

 

📝 풀이

등차수열은 같은 값이 계속 더해가는 수열이고, 등비 수열은 같은 값이 계속 곱해가는 수열이다.

 

common[1] - common[0]과 common[2] - common[1]이 같으면 등차수열 다르면 등비수열 이다

 

그래서

두 값을 비교해서 같으면 마지막 요소에 더 common[1] - common[0]을 더해주고

다르면 common[1] / common[0]을 곱해주었다


관련 내용

array.Last() : 배열의 마지막 요소를 반환한다. https://twd0622.tistory.com/2#comment18625578

 

[C# 문법] Array 메서드 모음

Array 메서드 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. 주요 메서드Length: 배열의 길이를 반환한다.int[] arr = { 1, 2, 5, 4, 3 };Console.WriteLine(arr.Length); // 5  Sort(): 배열을 정렬

twd0622.tistory.com