LeetCode: 1523. Count Odd Numbers in an Interval Range
Given two non-negative integers low and high. Return the count of odd numbers between low and high (inclusive)
두 정수 low와 high 사이의 수 중에 있는 홀수의 개수를 구하는 문제이다. 홀수를 찾는 범위에는 higt가 포함된다.
low가 3, high가 7이라면 홀수를 찾는 범위는 4, 5, 6, 7(high)가 된다.
처음에는 for문을 사용하여 2로 나누었을 때 나머지가 1인 수들의 개수를 세려고 했다.
def countOdds(self, low: int, high: int) -> int:
cnt = 0
for i in range(low, high+1):
if i % 2 == 1:
cnt += 1
return cnt
수의 범위에 high가 포함되어야 하기 때문에 range로 end값을 설정할 때 high+1을 설정했다.
그러나 Time Limit Exceeded 에러가 나왔고 범위가 최소 0부터 최대 10^9로 매우 넓기에 저렇게 일일이 세는 방식으로는 계산시간이 너무 오래 걸릴 수밖에 없었다.
위에 서술한 수의 성질을 바탕으로 홀수의 개수를 구하니 Accepted 되었다.
이렇게 시작값과 끝값을 통해 짝수와 홀수의 개수를 구하는 경우 범위에 시작값과 끝값이 포함이 되느냐 아니냐에 수학공식에 대한 설명이 좀 달라 헷갈릴 수 있다. 수의 성질을 이용한 문제일 경우 범위를 잘 봐야 하는 것 같다. 일일이 반복문으로 계산해서 구하는 것보다 입출력되는 수가 어떤 수들인지 분석해보는 버릇을 들여야겠다.
https://leetcode.com/problems/count-odd-numbers-in-an-interval-range/submissions/
'Algorithm > Mastered' 카테고리의 다른 글
[프로그래머스]타겟 넘버 (0) | 2023.11.15 |
---|---|
[백준][2798] 브루트포스, Combinations을 이용한 풀이 (1) | 2022.12.28 |
[LeetCode] 1491. Average Salary Excluding the Minimum and Maximum Salary (0) | 2022.09.18 |
for 문을 사용하지 않고 홀수의 개수 구하기 (0) | 2022.09.15 |
댓글