코딩테스트

BOJ : 2018

joonwoong 2024. 6. 9. 23:57

1. 문제

 

2. 문제 설명 및 알고리즘 설계

 

1부터 투포인터 알고리즘을 통해서 앞과 뒤를 i와 end로 정해두고 풀어줍니다.

이때 부분합을 잘 생각해줘야 합니다.

 

3. 코드

package week10;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Q2018_boj {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int result = 0;
        int end = 1;
        int sum = 0;

        for(int i=1; i<= N; i++){
            while(sum<N && end <=N){
                sum += end;
                end += 1;
            }

            if(sum == N){
                result += 1;
            }
            sum -= i;
        }
        System.out.println(result);
    }
}

 

4. 시간복잡도

O(N)

 

5. 결과

 

첫값 마지막값 확인하려고 넣어둔 출력문을 지우지 않고 돌려서 틀렸는데 찾는데 조금 걸렸네요.

'코딩테스트' 카테고리의 다른 글

BOJ : 11728  (1) 2024.06.10
BOJ : 20444  (1) 2024.06.06
BOJ : 11687  (0) 2024.06.06
BOJ : 1654  (0) 2024.06.03
BOJ : 10815  (3) 2024.06.02