Leetcode Java Longest Square Streak in an Array
업데이트:
문제
코드
class Solution {
public int longestSquareStreak(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
Arrays.sort(nums);
int result = -1;
for (int num : nums) {
int sqrt = (int) Math.sqrt(num);
if (sqrt * sqrt == num && map.containsKey(sqrt)) {
map.put(num, map.get(sqrt) + 1);
result = Math.max(result, map.get(num));
} else {
map.put(num, 1);
}
}
return result;
}
}
결과
설명
- 아래의 조건을 만족하는 가장 긴 정수 배열의 길이를 반환하는 문제이다.
- 정수 배열은 최소 2개 이상의 요소를 가진 배열이어야 한다.
- 값을 오름차순으로 정렬하였을 때, 이전 값의 제곱 값이 다음 값으로 존재한다.
- 문제 풀이에 필요한 변수를 정의한다.
- map은 각 값을 넣어 저장할 변수로, HashMap으로 초기화한다.
- result는 가장 긴 정수 배열의 길이를 저장할 변수로, -1로 초기화한다.
- nums를 오름차순 정렬하고 num에 순차적으로 넣어 아래를 수행한다.
- sqrt는 num을 제곱근한 값을 저장한 변수이다.
- sqrt의 제곱 값이 nu과 동일하고 map에 sqrt의 값이 존재하면 map의 해당 값에 해당하는 값을 증가시키고, result에 result와 map의 num이 키인 값 중 큰 값인 최대 길이를 넣어준다.
- 위의 경우가 아니라면 map의 num이 키인 값에 1을 넣어준다.
- 반복이 완료되면 최대 길이가 저장된 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기