게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
알고리즘 문제인데 다른 해답이 있을까요?
게시물ID : programmer_22923짧은주소 복사하기
작성자 : 아라니나
추천 : 0
조회수 : 1493회
댓글수 : 8개
등록시간 : 2019/05/29 16:47:50

A[N] 라는 배열이 주어진다. 

(N은 int, N의 범위는 0~100,000)

A배열 각 요소의 값은 -1,000,000,000 ~ 1,000,000,000


A배열의 요소는 하나의 도시를 나타내고, A배열 요소의 값은 그 도시의 매력지수이다.

당신은 두개의 도시를 여행 할 수 있다.

단, 도시간의 간격은 각 각 1매력지수 씩 증가 한다. // 같은 도시를 두 번 여행 해도 된다. 이때 도시간격으로 인한 매력지수는 0이다.


예를 들어 A[5]의 매력이 30, A[4]의 매력이 20일 때 두 도시를 여행한다면

A[5] + A[4] +(5-4)  = 51

51이라는 매력지수를 얻게 된다.


예를 들어 A[1]의 매력이 30일 때 A[1] 도시를 여행한다면

A[1] + A[1] +(1-1)  = 60

60이라는 매력지수를 얻게 된다.



이때 가장 큰 매력지수를 return 하여라 


라는 문제 입니다.


이중 for 문으로 아래와 같이 문제를 풀었는데..... 아마 시간복잡도 때문에 N이 커질수록 걸리는 시간이 오래 걸려서 낮은 점수를 받은것 같습니다.

 int maxResult = 0;

        int compare = 0;


        for(int i=0; i<N.length; i++ ) {

            for(int j=i+1; j<N.length; j++) {

                compare = N[i] + N[j] +(j-i);

                if(maxResult < compare) {

                    maxResult = compare;

                }

            }

        }


        return maxResult;




혹시 이중for 문이 아닌 다른 풀이나, 이중 for문 내에서도 시간 복잡도를 줄일 수 있는 방법이 있을까요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호