Leetcode Java Powerful Integers
업데이트:
문제
코드
class Solution {
public List<Integer> powerfulIntegers(int x, int y, int bound) {
Set<Integer> result = new HashSet<>();
for (int i = 1; i < bound; i *= x) {
for (int j = 1; i + j <= bound; j *= y) {
result.add(i + j);
if (y == 1) {
break;
}
}
if (x == 1) {
break;
}
}
return new ArrayList<>(result);
}
}
결과
설명
- 아래의 조건을 만족하는 [0, bound] 범위 내 숫자들을 반환하는 문제이다.
- i와 j가 0 이상일 때 $x^i + y^j$로 표현 가능해야한다.
-
result는 결과에 해당하는 숫자들을 저장할 변수로, 중복을 제거하기 위해 HashSet으로 초기화한다.
- 1부터 bound 미만까지 i에 x를 곱하면서 아래를 반복한다.
- 1부터 $i + j$가 bound 이하일 때까지 j에 y를 곱해서 아래를 반복한다.
- result에 $i + j$를 넣어준다.
- y가 1인 경우, 증가폭이 없으므로 반복을 그만둔다.
- x가 1인 경우, 위와 동일하게 증가폭이 없으므로 반복을 그만둔다.
- 1부터 $i + j$가 bound 이하일 때까지 j에 y를 곱해서 아래를 반복한다.
- 반복이 완료되면 result를 ArrayList로 변환하여 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기