inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

4. 연속부분수열(복합적 문제)

시간복잡도가O(N^2)이라고 생각 되서 시간이 초과될거같은데 오류가 안나서 궁금합니다.

270

박민수

작성한 질문수 3

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

import java.util.Arrays;
import java.util.Scanner;

public class lecture27 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);

        int n=scanner.nextInt();
        int m=scanner.nextInt();
        int []arr=new int[n];
        for (int i = 0; i <n ; i++) {
            arr[i]=scanner.nextInt();
        }

        int count=0;
        for (int i = 0; i <n ; i++) {
            int sum=arr[i];
            for (int j = i+1; j <n ; j++) {
                sum=sum+arr[j];
                if(sum==m)
                {
                    count++;
                }
                else if(sum>=m)
                {
                    break;
                }

            }
        }

        System.out.println(count);








    }
}

이 코드로 정답입니다는 받았는데 , 제 생각에는

O(n^2)이라 시간 초과가 나야할것 같은데

이중 for문이니까 시간 초과가 나지 않아서 어떤 부분에서 잘못 생각한건지 궁금합니다.

java 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대해 답변드릴게요.

O(N^2) 시간 복잡도는 두 중첩된 for문 때문에 생기는 것이 맞습니다. 하지만, O(N^2) 시간 복잡도가 항상 시간 초과를 의미하지는 않습니다. 입력되는 데이터의 크기(N의 값)에 따라서, O(N^2) 알고리즘도 충분히 시간 안에 해결이 가능한 경우가 있어요.

시간 초과가 발생할지 여부는 다음과 같은 요소들에 의해 결정됩니다:
1. 실행 환경의 성능(프로세서의 속도, 메모리 크기 등)
2. 허용되는 시간 제한
3. 입력 데이터의 크기 및 특성

예를 들어, 문제에서 N의 최대 크기가 충분히 작다면(예를 들어, 1000 이하로 제한된다면) O(N^2) 시간 복잡도의 알고리즘도 충분히 빠른 시간 안에 실행될 수 있습니다. 반면에, N이 매우 큰 경우(예: 10000 이상)에는 동일한 알고리즘이 시간 초과로 이어질 수 있어요.

또한 코드 내에 조건문(if(sum>=m) break;)을 통해 불필요한 반복을 줄이고 있어, 최악의 경우가 아닐 수 있습니다. 실제 실행 시간은 최악의 시간 복잡도만으로 결정되지 않으며, 이와 같은 최적화도 도움이 됩니다.

따라서, 시간 초과가 나지 않았다면, 그 문제의 입력 크기가 충분히 작거나, 문제에서 설정한 시간 제한이 알고리즘의 실행 시간을 수용할 만큼 넉넉하기 때문일 수 있습니다.

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

21

1

갑자기 채점 사이트가 바뀌었어요

0

29

1

문제 리스트 페이지

0

25

1

채점 사이트 관련 질문드립니다

0

23

1

봉우리 문제 질문입니다

0

79

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

63

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

70

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

67

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

84

2

6-7 강의에서

0

47

1

6-6. 장난꾸러기 질문 있습니다.

0

43

1

강의 수강후 코딩테스트

0

106

1

answer 변수 사용 여부

0

43

1

2중 for문

1

84

2

2-11. 임시반장정하기 (Runtime Error)

0

63

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

69

1

이런 풀이는 어떨까요

0

42

1

자바 스트림 방식의 효율성 질문 드립니다.

0

56

1

알고리즘 자료 구조들..

0

60

1

StringBuilder vs BufferdWriter

0

47

1

원더랜드(프림)

0

48

1

이런 코드는 어떤가요?

0

59

1

bfs 풀이

0

56

1

병합정렬

0

55

1