알고리즘/BOJ

백준 17088번 등차수열 변환

꾸준함. 2020. 4. 17. 01:00

문제 링크입니다: https://www.acmicpc.net/problem/17088

 

17088번: 등차수열 변환

크기가 N인 수열 A = [A1, A2, ..., AN]이 있을 때, 모든 1 ≤ i < N에 대해서, Ai+1-Ai가 모두 일치하면 등차수열이라고 한다. 예를 들어, [3], [6, 6, 6], [2, 8, 14, 20], [6, 4, 2]는 등차수열이고, [4, 5, 4], [6, 3, 1]은 등차수열이 아니다. 수열 B = [B1, B2, ..., BN]을 등차수열로 변환하려고 한다. 각각의 수에는 연산을 최대 한 번 적용할 수 있다. 연산은 두 가

www.acmicpc.net

N의 크기가 최대 100,000이기 때문에 모든 경우의 수를 고려하는 코드를 작성할 경우 TLE가 발생할 것이 자명합니다.

따라서, 등차수열의 규칙을 생각해봐야 합니다.

수학에서, 등차수열은 연속하는 두 항의 차이가 모두 일정한 수열을 뜻합니다.

따라서, 등차수열이기 위해서는 (두 번째 숫자 - 첫 번째 숫자)의 차가 (세 번째 숫자 - 두 번째 숫자), (네 번째 숫자 - 세 번째 숫자), ..., (N 번째 숫자 - (N - 1) 번째 숫자)와 동일해야합니다.

즉, 두 번째 숫자와 첫 번째 숫자를 각각 독립적으로 [-1, 0, 1]한 결과를 토대로 등차수열을 유지할 수 있는지 연산해나가면 시간복잡도가 O(9 * N)이기 때문에 TLE 발생을 걱정하지 않아도 됩니다.

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 5568번 카드 놓기  (0) 2020.04.21
백준 17609번 회문  (0) 2020.04.20
백준 2522번 별 찍기 - 12, 백준 2523번 별 찍기 - 13  (0) 2020.04.10
백준 13015번 별 찍기 - 23  (0) 2020.04.10
백준 10997번 별 찍기 - 22  (0) 2020.04.09