출처: leetcode.com/problems/minimum-cost-to-move-chips-to-the-same-position/
문제
한글 번역은 아래 더보기를 클릭해주세요.
더보기
i번째 칩의 위치가 position[i]를 나타내는 n개의 칩이 있다.
모든 칩을 같은 위치로 옮겨야 한다. 한 번에, i번째 칩의 위치를 position[i]에서 다음으로 옮길 수 있다:
- position[i] + 2 또는 position[i] - 2로, cost = 0.
- position[i] + 1 또는 position[i] - 1로, cost = 1.
모든 칩을 같은 위치로 옮기는 데 드는 최소 비용을 구해라.
예제 1:
- 입력: position = [1,2,3]
- 출력: 1
- 설명: 첫 번째 이동: 위치 3인 칩을 위치 1로 옮긴다. cost = 0이다. 두 번째 이동: 위치 2인 칩을 위치 1로 옮긴다. cost = 1이다. 총 비용은 1이다.
예제 2:
- 입력: position = [2,2,2,3,3]
- 출력: 2
- 설명: 위치 3에 있는 칩 2개를 위치 2로 옮긴다. 각각 이동하는 데 cost = 1이다. 총 비용은 2이다.
예제 3:
입력: position = [1,1000000000]
출력: 1
제약조건:
- 1 <= position.length <= 100
- 1 <= position[i] <= 10^9
풀이
해결방법
We need to move all the chips to the same position. In one step, we can change the position of the ith chip from position[i] to:
1. position[i] + 2 or position[i] - 2 with cost = 0.
2. position[i] + 1 or position[i] - 1 with cost = 1.
홀수 칸, 짝수 칸에 있는 칩의 갯수를 구하고
홀수 칸의 칩의 갯수와 짝수 간의 칩의 갯수를 비교하여
더 적은 수의 칩을 반대 칸으로 옮긴다.
javascript
var minCostToMoveChips = function(position) {
let odd = 0;
let even = 0;
// 홀수 칸, 짝수 칸에 있는 칩의 갯수를 구하고
position.forEach(pos => {
if (pos % 2 === 0) {
even += 1;
} else {
odd += 1;
}
});
// 홀수 칸의 칩의 갯수와 짝수 간의 칩의 갯수를 비교하여
// 더 적은 수의 칩을 반대 칸으로 옮긴다.
return Math.min(even, odd);
};
python
class Solution:
def minCostToMoveChips(self, position: List[int]) -> int:
odd = 0
even = 0
# 홀수 칸, 짝수 칸에 있는 칩의 갯수를 구하고
for pos in position:
if pos % 2 == 0:
even += 1
else:
odd += 1
# 홀수 칸의 칩의 갯수와 짝수 간의 칩의 갯수를 비교하여
# 더 적은 수의 칩을 반대 칸으로 옮긴다.
return min(even, odd)
결과
'CS기초 > 코딩테스트' 카테고리의 다른 글
LeetCode 392 (Easy) Is Subsequence (0) | 2021.03.03 |
---|---|
LeetCode 1710 (Easy) Maximum Units on a Truck (0) | 2021.03.03 |
LeetCode 122 (Easy) Best Time to Buy and Sell Stock II (0) | 2021.03.03 |
LeetCode 1725 (Easy) Number Of Rectangles That Can Form The Largest Square (0) | 2021.02.24 |
LeetCode 1221 (Easy) Split a String in Balanced Strings (0) | 2021.02.24 |