숫자의 표현 - 투포인터,슬라이딩

Seongjin Jo·2023년 6월 29일
0

프로그래머스 LV2

목록 보기
12/28

문제

풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        int lt=0; int rt=0;
        int sum=0;
        
        int[] arr = new int[n];
        for(int i=0; i<n; i++) arr[i]=i+1;
        
        for(rt=0; rt<n-1; rt++){
            sum+=arr[rt];
            if(sum==n) answer++;
            else{
                while(sum>=n){
                    sum-=arr[lt];
                    lt++;
                    if(sum==n) answer++;
                }
            }
        }
        return answer+1;
    }
}

이 문제는 투포인터,슬라이딩윈도우 방식으로 lt,rt를 슬라이딩 시키면서 값을 구하는 문제!!!!!!!!

  1. 새로운 배열에 값을 담아준다.
  2. rt를 증가시키는 for문을 만들어준다.
  3. 그냥 전부 다 sum에 더해준다. 이 때 sum==n이면 answer++를 해준다.
  4. else문으로 같지 않은 경우에 while문으로 다시 lt가 쫓아오는 로직을 짜준다. 여기에서도 마찬가지로 sum==n이 되는 경우를 answer++ 해준다.
  5. 이러한 방식으로 슬라이딩 하면서 문제를 푼다. 이 문제에서는 자기 자신도 answer에 포함 시키기 때문에 +1을 해서 리턴해준다.

0개의 댓글