Leetcode Java Card Flipping Game
업데이트:
문제
코드
class Solution {
public int flipgame(int[] fronts, int[] backs) {
Set<Integer> set = new HashSet<>();
for (int idx = 0; idx < fronts.length; idx++) {
if (fronts[idx] == backs[idx]) {
set.add(fronts[idx]);
}
}
int result = 2001;
for (int idx = 0; idx < fronts.length; idx++) {
if (!set.contains(backs[idx])) {
result = Math.min(result, backs[idx]);
}
if (!set.contains(fronts[idx])) {
result = Math.min(result, fronts[idx]);
}
}
return result % 2001;
}
}
결과
설명
- 카드들의 앞면의 숫자인 fronts와 뒷면의 숫자인 backs를 이용하여 카드를 뒤집었을 경우, 가능한 최소 크기의 좋은 정수를 반환하는 문제이다.
- 앞면과 뒷면의 숫자가 동일한 경우, 값의 변화가 없으므로 좋은 정수가 될 수 없다.
- 좋은 정수가 없을 경우, 0을 주어진 문제의 결과로 반환한다.
- 문제 풀이에 필요한 변수를 정의한다.
- set은 앞면과 뒤면의 숫자가 동일한 숫자를 저장할 변수로, fronts와 backs 내 동일한 숫자를 넣어준다.
- result는 최소 가능한 좋은 정수를 저장할 변수로, 숫자의 최대 크기인 2000보다 큰 2001로 초기화한다.
- 0부터 fronts의 길이 미만까지 idx를 증가시키며 아래를 수행한다.
- set에 backs의 idx번째 값이 없는 경우, result에 해당 값과 backs의 idx번째 값 중 작은 값을 넣어준다.
- set에 fronts의 idx번째 값이 없는 경우, result에 해당 값과 fronts의 idx번째 값 중 작은 값을 넣어준다.
- 반복이 완료되면 result를 2001로 나눈 나머지 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기