문제
https://school.programmers.co.kr/learn/courses/30/lessons/131701
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
해답
import java.util.*;
class Solution {
public int solution(int[] elements) {
Set<Integer> set = new HashSet<>();
int[] rounded = new int[elements.length*2];
for(int i=0;i<elements.length*2;i++){
rounded[i] = elements[i%elements.length];
}
for(int i=0;i<elements.length;i++){
int sum =0;
for(int j=0;j<elements.length;j++){
sum+=rounded[i+j];
set.add(sum);
}
}
return set.size();
}
}
해설
문제를 보면 일일이 다 덧셈을 해서 처리해야할것같으나
중복제거에서 Set를 떠올리고, 윈도우 슬라이드를 이용해 첫번째 자리부터 자기자신에 돌아올때까지 1개씩 늘려가면서 덧셈을 하여 set에 add를 해주면 간단히 풀수 있는 문제다.
레벨2에서 윈도우 슬라이드를 강조하는것이 보이는 문제였다.
'Coding Test > JAVA 코딩테스트 풀이정리(프로그래머스)' 카테고리의 다른 글
프로그래머스 스쿨(Java - Lv.2) - 리코쳇 로봇[BFS] (1) | 2025.03.04 |
---|---|
프로그래머스 스쿨(Java - Lv.2) - 완전범죄[DP - 메모아이징] (0) | 2025.03.03 |
프로그래머스 스쿨(Java - Lv.1) - 택배 상자 꺼내기[2025 프로그래머스 코드챌린지 2차 예선] (0) | 2025.02.20 |
프로그래머스 스쿨(Java - Lv.1) - 유연근무제[2025 프로그래머스 코드챌린지 1차 예선] [반복문처리] (1) | 2025.02.12 |
프로그래머스 스쿨(Java - Lv.2) - 피로도[경우의수를 따지는 완전탐색] (0) | 2025.01.28 |