```
백준 1731번 추론 C++로 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 1731번 풀이
https://www.acmicpc.net/problem/1731
1731번: 추론
등차가 정수인 등차수열 (어떤 수에 차례대로 일정한 수를 더해서 이루어지는 수열) 은 2개의 숫자로 나타낼 수 있다. P는 수열의 첫 번째 수이고, Q는 그 다음수가 되기 위해 바로 전의 수에 더해
www.acmicpc.net
백준 1731번 추론은
N개의 숫자만큼
수열에 숫자가 순서대로 주어질 경우
등비수열인지
등차수열인지 맞추는 문제입니다.
수열은 두가지 종류만 있다고 가정하며
N은 항상 3 이상 50이하이고
입력된 수는 10에 6승이하 자연수입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
먼저 숫자 세개와 테스트 케이스를 입력 받습니다.
3개의 숫자를 가지고 일단
등차수열인지 등비수열인지 판단합니다.
등차수열의 경우
수열내에 순서대로 주어진 숫자
a1, a2, a3
일때
(a3-a2) == (a2-a1)
을 만족하고
등비수열은
수열내에 순서대로 주어진 숫자
a1, a2, a3
일때
(a3/a2) == (a2/a1)
을 만족합니다.
그 다음 테스트 케이스가 3개 이상일때
혹시 모를 앞선 경우를 둘다 만족하는 경우 한번 더 확인 해주고
남은 테스트 케이스 만큼 입력을 받은 다음
각 수열의 경우에 따라
마지막 값에 연산을 해서 답을 출력해 줍니다.
전체 코드는 다음과 같습니다
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include<numeric>
int main()
{
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
long long lastVal;
int testCase;
std::cin >> testCase;
long long tempVal;
std::cin >> tempVal;
const long long a1 = tempVal;
std::cin >> tempVal;
const long long a2 = tempVal;
std::cin >> tempVal;
const long long a3 = tempVal;
bool isArithmeticSeq = false;
if ((a3 - a2) == (a2 - a1))
{
isArithmeticSeq = true;
}
bool isGeometicSeq = false;
if ((a3 / a2) == (a2 / a1))
{
isGeometicSeq = true;
}
lastVal = a3;
int modifierVal = 0;
if ((testCase > 3) && isArithmeticSeq && isGeometicSeq)
{
modifierVal = 1;
std::cin >> tempVal;
const long long a4 = tempVal;
if ((a4 - a3) == (a3 - a2))
{
isGeometicSeq = false;
}
else
{
isArithmeticSeq = false;
}
lastVal = a4;
}
for (int i = 3 + modifierVal; i < testCase; i++)
{
long long tempVal;
std::cin >> tempVal;
lastVal = tempVal;
}
if (isArithmeticSeq == true)
{
lastVal = lastVal + (a2 - a1);
}
if (isGeometicSeq == true)
{
lastVal = lastVal * (a2 / a1);
}
std::cout << lastVal;
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
Introduction to Algorithms
https://codemasterkimc.tistory.com/35
C++ 이론을 배울수 있는 곳 정리
개요 C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime
codemasterkimc.tistory.com
https://codemasterkimc.tistory.com/50
300년차 개발자의 좋은 코드 5계명 (Clean Code)
이번 글을 통해 배워갈 내용 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋
codemasterkimc.tistory.com
'C++ > C++ 알고리즘' 카테고리의 다른 글
| 백준 2460번 지능형기차2 C++로 구현해보기 (0) | 2021.09.02 |
|---|---|
| 백준 1864번 문어숫자 C++로 구현해보기 (0) | 2021.09.02 |
| 백준 1834 나머지와 몫이 같은 수 C++로 구현해보기 (0) | 2021.09.01 |
| 백준 21867번 JAVA BiteCode C++로 구현해보기 (0) | 2021.09.01 |
| 백준 17174번 전체 계산 횟수 C++로 구현해보기 (0) | 2021.08.31 |