2023. 10. 12. 19:08, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/120924
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> common) {
int answer = 0;
int a= common[0];
int b= common[1];
int c= common[2];
int len=common.size();
int last=len-1;
if(a+c==2*b) return 2*common[last]-common[last-1];
else return common[last]*common[last]/common[last-1];
}
0번째 원소, 1번째 원소, 2번째 원소의 관계가 등차수열인지 등비수열인지 확인해서, 등차수열이면 2b= a+c 를 만족하므로 구해야 하는 항을 위의 공식을 통해 구하고, 등비수열이면 b*b= a*c 라는 공식을 통해서 구하는 형태로 작성하였다.
막상 이렇게 구하고 다른 사람의 풀이를 보니, 조금 더 간결하게 표현하고 이해하기 편한 형태의 코드가 있어서 첨부한다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> common) {
int answer = 0;
if(common[0] - common[1] == common[1] - common[2]){
return common.back() - (common[0] - common[1]);
}
else{
return common.back() * (common[1] / common[0]);
}
return answer;
}
이 경우, 0항 1 항 2항을 이용해서 등차수열인지 확인하고, 등차수열이라면 마지막 항에서 공차를 더하는 형태로 작성하고,
등비수열이라면 마지막 항에서 등비를 곱하는 형태로 작성하였다.
이게 훨씬 깔끔하고 보기 편한것 같다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv 2. c++ 18118 요격시스템 (0) | 2023.10.25 |
---|---|
코딩테스트 입문 Lv 0 100문제 해결 완료. (0) | 2023.10.12 |
Lv 0 . 연속된 수의 합 (0) | 2023.10.12 |
Lv 0. 종이 자르기 (0) | 2023.10.12 |
Lv 0. 문자열 밀기. (0) | 2023.10.12 |
Comments, Trackbacks