2177. Find Three Consecutive Integers That Sum to a Given Number
임의의 정수 num
이 주어진다. 이 때, 증가하는 3개 정수의 합이 num이 같다면 3개의 정수를 리턴한다. 없다면 빈 배열을 반환한다.
예시를 보면, num = 33
이 주어지고, 연속적인 3개의 정수 10
, 11
, 12
의 합은 33을 만족한다. 그러므로, [10, 11, 12]
를 리턴한다.
임의의 정수를 x
라고 둘 때, 연속적인 세 개의 정수는 x-1
, x
, x+1
로 둘 수 있다. 이 세 정수의 합은 3x
이다.
주어진 num
이 3의 배수이여야 연속적인 세 개의 정수를 구할 수 있다.
즉, 주어진 num
이 3의 배수가 아니거나 0이 아니라면 빈 배열을 반환한다.
if num%3: return []
만약, num이 3의 배수라면 다음과 같이 작성할 수 있다.
if num%3 == 0: return [num//3 - 1, num//3, num//3 + 1]
class Solution:
def sumOfThree(self, num: int) -> List[int]:
i = num // 3
if num % 3 == 0:
return [i-1, i, i+1]
return []
시간 복잡도 O(1)
를 만족하는 풀이이다.