프로그래머스/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. 짐깅언니)