Tany
백문이불어일Tany
Tany
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • JAVA TPC (1)
    • JAVA (10)
    • CS (3)
    • SPRING (5)
    • DFS BFS (12)
    • SQL (7)
    • 알고리즘 정리 (76)
    • Git, Github (3)
    • 학습 계획 (36)
    • 코드스쿼드 학습일지 (19)
    • Servlet (5)
    • VPC (2)
    • AWS (4)
    • JPA (5)
    • 취미생활 (2)
    • 프로젝트 기록 (7)
      • Issue Tracker 삽질 기록 (5)
      • 당근마켓 API 서버 기록 (2)
      • 나만의 블로그 제작 기록 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이분탐색
  • github
  • 인프런
  • JSP
  • JPA
  • 파이썬
  • EC2
  • 자료구조
  • 이코테
  • BFS
  • 알고리즘
  • Stack
  • 자바
  • java
  • 해시
  • 완전탐색
  • MVC
  • 프로그래머스
  • 주간 학습 계획
  • dfs
  • MySQL
  • GIT
  • sql
  • 면접을 위한 CS 전공지식 노트
  • 재귀
  • hash
  • AWS
  • 문자열
  • 정렬
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Tany

백문이불어일Tany

백준 12847번 꿀 아르바이트 (실버 4)
알고리즘 정리

백준 12847번 꿀 아르바이트 (실버 4)

2022. 4. 16. 22:38

 


Sliding Window 알고리즘을 통해 풀이했다.

먼저 0번 인덱스 부터 M까지 인덱스를 모두 더해서 창을 하나 만들고 그 값을 Sum 에 담는다.

이후 창을 한 칸씩 밀고 나가면서 인덱스를 모두 더한 값을 이전의 Sum 값과 비교한 뒤, 최대 값을 Result 에 담아 출력하면 끝.

package backjoonsliver;

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

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

        int N = Integer.parseInt(st1.nextToken());
        int M = Integer.parseInt(st1.nextToken());

        StringTokenizer st2 = new StringTokenizer(br.readLine());
        int[] salary = new int[N];

        for (int i = 0; i < salary.length; i++) {
            salary[i] = Integer.parseInt(st2.nextToken());
        }

        long result = solution(N, M, salary);
        System.out.println(result);
    }

    private static long solution(int n, int m, int[] salary) {
        int sum = 0;
        long result = 0;

        for (int i = 0; i < m; i++) {
            sum += salary[i];
        }

        result = sum;

        for (int i = m; i < n; i++) {
            sum += (salary[i] - salary[i - m]);
            result = Math.max(result, sum);
        }

        return result;
    }
}

// 각 날마다 급여가 정해져 있다.
// 취직을 하면 일을 시작한 날부터 끝난 날 까지 하루도 빠질 수 없다.

// N + 1 후에 편의점에 취직하려 한다.
// 최대 M 일 까지 일한다.

// 5(N = 월세를 내기 바로 전날) 3(M = 일을 할 수 있는 날)
// 10 20 30 20 10 (1일 부터 N일 까지 일급)
// 취직한 사람이 일을 해서 벌 수 있는 최대 이익을 출력해라.

'알고리즘 정리' 카테고리의 다른 글

자바(Java) 알고리즘 문제풀이 아나그램 [인프런 / Hash]  (0) 2022.04.19
자바(Java) 알고리즘 문제풀이 학급 회장 [인프런 / Hash]  (0) 2022.04.18
백준 11728번 배열 합치기 (실버 5)  (0) 2022.04.16
백준 10757번[수학] 큰 수 A+B  (0) 2021.10.26
백준 2839번[수학] 설탕 배달  (0) 2021.10.26
    '알고리즘 정리' 카테고리의 다른 글
    • 자바(Java) 알고리즘 문제풀이 아나그램 [인프런 / Hash]
    • 자바(Java) 알고리즘 문제풀이 학급 회장 [인프런 / Hash]
    • 백준 11728번 배열 합치기 (실버 5)
    • 백준 10757번[수학] 큰 수 A+B
    Tany
    Tany
    내가 보려고 만드는 백엔드 기록장 Github https://github.com/juni8453

    티스토리툴바