ෆ ⋆ ₊ ゚ ☽ * ₊ ⋆

프로그래머스/C

다음에 올 숫자

우당탕가윤 2022. 12. 30. 10:26

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


■ 문제 설명

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

 

■ 제한사항

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

■ 나의 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// common_len은 배열 common의 길이입니다.
int solution(int common[], size_t common_len) {
    int answer = 0, se = 0;
    
    // 등차수열
    if(common[1] - common[0] == common[2] - common[1]) {
        se = common[1] - common[0];
        answer = common[common_len - 1] + se;
    }
    // 등비수열
    else {
        se = common[1] / common[0];
        answer = common[common_len - 1] * se;
    }
    return answer;
}

 

■ 코드 해설

 

1번째 요소와 0번째 요소의 차, 2번째 요소와 1번째 요소의 차가 같다면 등차수열로 판단해 그 차를 더해준다.

만약 등비수열로 판단한다면 그 요소의 나눈 값을 곱해준다. 


■ 기타

C언어에는 length 함수가 존재하지 않고, 배열을 주소로 받아오기 때문에 common 메모리 사이즈를 구하면 포인터인 4 bytes 를 변환받아 main에서만 배열 크기를 알아낼 수 있다. (by. 짐깅언니)

'프로그래머스 > C' 카테고리의 다른 글

제곱수 판별하기  (0) 2023.01.11
머쓱이보다 키 큰 사람  (0) 2023.01.04
최댓값 만들기(1)  (0) 2023.01.04
편지  (0) 2022.12.30