6회차 - 알고리즘 기록 : 과유불급 (어려웠던거 다시!)

2022. 7. 11. 19:16·TEAM STUDY/알고리즘 코딩 테스트 스터디
728x90
반응형

 

 - 여러개의 카드중에 L 부터 R 까지의 숫자를 더하고자한다.

 - L 부터 R 의 합을 한 수가 제일 큰 사람을 구한다.

 - 같은 숫자일 경우 먼저 구매한 사람을 구한다.

 

아래와 같은 나열된 카드가 있을 경우에

1번 카드 2번 카드 3번 카드 4번 카드 5번 카드
1 -1 5 2 3

 

예를들어보면 아래와 같다.

2번부터 4번의 합 6
1번부터 3번의 합 5

 

이렇게 계산하는 것을 부분합, 구간합이라고 한다.

선형공간에서 주어진 범위의 원소들에 대한 합을 계산하는 문제.

 

가장 쉬운 방법은 FOR 문을 이용해 L 부터 R 까지 더하는 것이지만 최악의 시간 복잡도를 가지고 있다.

고차원적이고 복잡한 정보는 단순한 여러 정보들의 조합으로 표현될 수 있다.

    -  고차원 적  정보 : 왼쪽 끝과 오른쪽 끝으로 표현된 범위 

    -  저차원 적 정보 : 오른쪽 끝으로만 표현된 범위 ( 왼쪽 끝은 항상 1 )

 

모든 범위를 0부터 ~ 범위까지 모두 가진 값을 가지고 있다면 ?

 

  1번 카드 2번 카드 3번 카드 4번 카드 5번 카드
cards 1 -1 5 2 3
더하기 [0] ~ [0] [0] ~ [1] [0] ~ [2] [0] ~ [3] [0] ~ [4]
rangeSum 1 0 5 7 10

 

rangeSum [R] 에서 rangeSum [L] 을 빼기한다면 L ~ R 의 구간합을 구할 수 있다.

 

public static Range getBestRange(int n, int m, int[] cards, Range[] ranges) {
    Range answer = ranges[0];
    long[] rangeSum = new long[n+1];
    rangeSum[0] = 0;
    

   // 누적합 배열

    for(int i=1;i<=n; i++){
        rangeSum[i] = rangeSum[i-1] + cards[i];
    }

    //구간합 큰 후보 선정
    for(Range r : ranges){
        r.totalPoint = rangeSum[r.right] - rangeSum[r.left-1];
        if(answer.totalPoint < r.totalPoint){
            answer = r;
        }
    }
    return answer;
}


 

728x90
반응형
저작자표시 (새창열림)

'TEAM STUDY > 알고리즘 코딩 테스트 스터디' 카테고리의 다른 글

7회차 - Probing  (0) 2022.07.16
7회차 - 스도쿠 보드  (0) 2022.07.16
6회차 - 알고리즘 기록 : 네 카드 (어려웠던거 다시!)  (0) 2022.07.09
5회차 - 알고리즘 기록 : 세 카드  (0) 2022.07.02
5회차 - 알고리즘 기록 : 네 카드  (0) 2022.06.13
'TEAM STUDY/알고리즘 코딩 테스트 스터디' 카테고리의 다른 글
  • 7회차 - Probing
  • 7회차 - 스도쿠 보드
  • 6회차 - 알고리즘 기록 : 네 카드 (어려웠던거 다시!)
  • 5회차 - 알고리즘 기록 : 세 카드
Binsoo
Binsoo
내 트러블 슈팅
정수빈 기술블로그임.내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    REST API
    리눅스 마스터 요약
    springboot
    네트워크 관리사 2급 실기
    알고리즘
    스프링
    리눅스 마스터 1급
    Spring
    jpa
    Git 저장소
    네트워크 관리사 실기
    파이썬 알고리즘
    쿠버네티스 스터디
    VUE
    docker
    네트워크 관리사 학점
    리눅스 마스터
    BackendDevelopment
    리눅스 마스터 1급 요약
    리눅스 1급 요약
    네트워크 관리사 2급
    java
    쿠버네티스
    리눅스 마스터 1급 정리
    git
    네트워크 관리사
    redis
    네트워크 관리사 자격증
    네트워크 관리사 요약
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
6회차 - 알고리즘 기록 : 과유불급 (어려웠던거 다시!)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.