Leetcode Java Last Stone Weight
업데이트:
문제
코드
class Solution {
public int lastStoneWeight(int[] stones) {
Arrays.sort(stones);
for (int i = stones.length - 1, j = i - 1; j >= 0;) {
if (stones[j] == stones[i]) {
stones[i] = 0;
stones[j] = 0;
} else if (stones[j] > stones[i]) {
stones[j] = stones[j] - stones[i];
stones[i] = 0;
} else {
stones[j] = stones[i] - stones[j];
stones[i] = 0;
}
Arrays.sort(stones, 0, i);
i--;
j--;
}
return stones[0];
}
}
결과
설명
- 돌의 무게를 가진 stones를 이용하여 아래의 규칙을 만족하는 결과를 반환하는 문제이다.
- 가장 무거운 두 돌의 돌맹이의 무게가 같으면 두 돌 모두 파괴된다.
- 가장 무거운 두 돌의 돌맹이의 무게가 다르면 두 돌의 차이를 남긴다.
- 마지막 남은 돌이 없으면 0을 반환한다.
-
stones의 값들을 오름차순으로 정렬한다.
- i는 $stones.length - 1$로, j는 $i - 1$로 초기화하여 j가 0보다 클 때 까지 아래를 반복한다.
- stones의 i번째 돌과 j번째 돌의 무게가 동일하면 0으로 둘 모두 0으로 바꾼다.
- 위의 경우가 아니라 어느 한 쪽 돌의 무게가 크다면, 큰 돌의 자리에 두 돌의 차잇값을 넣어준다.
- stones의 처음부터 j까지 돌들의 무게를 오름차순 정렬하고 i와 j를 감소한다.
- 수행이 완료되면 stones의 첫 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기