https://school.programmers.co.kr/learn/courses/30/lessons/120924
■ 문제 설명
등차수열 혹은 등비수열 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 |