
3190. Find Minimum Operations to Make All Elements Divisible by Three
배열을 한 번 순회해 3으로 나눠지지 않는 숫자의 개수가 정답이다.
시간복잡도는 이다.
class Solution:
def minimumOperations(self, nums: List[int]) -> int:
ans = 0 # 필요한 총 연산 횟수 누적 변수
for num in nums: # nums의 모든 숫자를 순회
if num % 3 != 0: # 숫자가 3의 배수가 아니라면
ans += 1 # +1 또는 -1 한 번으로 3의 배수로 만들 수 있으므로 연산 1회 추가
return ans # 전체 필요한 최소 연산 횟수 반환

다음과 같이 한 줄로도 풀 수 있다.
class Solution:
def minimumOperations(self, nums: List[int]) -> int:
# x % 3 != 0 은 True/False 값을 가지며,
# True는 1, False는 0으로 계산된다.
# 즉, 3의 배수가 아닌 원소의 개수를 모두 더한 값이 정답.
return sum(x % 3 != 0 for x in nums)

이번에는 진짜로 너무 쉬운 문제였다.