Java 코딩테스트 공부/Java 백준 문제풀이

자바 백준 1806번 문제 - 부분합

2022. 8. 2. 21:21

문제출처 : https://www.acmicpc.net/problem/1806

 

1806번: 부분합

첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다.

www.acmicpc.net

 

문제 :

 

소스코드 :

import java.util.*;
class Main {
	// 투포인터 알고리즘 + 슬라이딩 윈도우 알고리즘
	public int solution(int n, int s, int[] arr) {
		int lt = 0, sum = 0;
		int answer = Integer.MAX_VALUE;
		for(int rt=0; rt<n; rt++) {
			sum += arr[rt];
			while (sum >= s) {
				answer = Math.min(answer, rt - lt + 1);
				sum -= arr[lt++];
			}
		}
		if (answer == Integer.MAX_VALUE) answer = 0;
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int s = sc.nextInt();
		int[] arr = new int[n];
		for(int i=0; i<n; i++) {
			arr[i] = sc.nextInt();
		}
		System.out.println(T.solution(n, s, arr));
	}
}

 

풀이 : 투포인터와 슬라이딩 윈도우 알고리즘을 적용하면 아주 쉽게 풀리는 문제이다.

lt와 rt 투포인터를 잡고 for문으로 rt값을 이동시키며 연속된 수들의 합이 s를 넘길 경우 lt값을 이동시키며

최소 길이를 Math.min을 통해 구한다.

'Java 코딩테스트 공부 > Java 백준 문제풀이' 카테고리의 다른 글

자바 백준 1016번 문제 - 제곱 ㄴㄴ 수  (0) 2022.08.11
자바 백준 1644번 문제 - 소수의 연속합  (0) 2022.08.11
Java 백준 1747번 문제 - 소수&팰린드롬  (0) 2022.08.01
백준 1032번 명령 프롬프트 / 자바 문자열 파트  (0) 2022.07.13
백준 10808번 알파벳 개수 / 자바 문자열 파트  (0) 2022.07.12
'Java 코딩테스트 공부/Java 백준 문제풀이' 카테고리의 다른 글
  • 자바 백준 1016번 문제 - 제곱 ㄴㄴ 수
  • 자바 백준 1644번 문제 - 소수의 연속합
  • Java 백준 1747번 문제 - 소수&팰린드롬
  • 백준 1032번 명령 프롬프트 / 자바 문자열 파트
daramG
daramG
dotori Java
다람쥐의 개발 블로그dotori Java
daramG
다람쥐의 개발 블로그
daramG
전체
오늘
어제
  • 분류 전체보기 (193)
    • Java 코딩테스트 공부 (67)
      • Java 알고리즘 공부 (37)
      • Java 백준 문제풀이 (27)
      • Java 코테 나만의 팁 (3)
    • SQL Study (0)
      • Programmers SQL 문제풀이 (0)
      • SQLP 준비 (0)
    • 웹 개발 지식 정리 (0)
      • Servlet (0)
      • Java 정리 (0)
    • 자바 스프링 (45)
      • 스프링 공부 (4)
      • 스프링 게시판 프로젝트 (6)
      • 부트 블로그 JPA 프로젝트 (30)
      • react & springboot (5)
      • 스프링 오류창고 (0)
      • 리액트 + 스프링 프로젝트 (0)
      • pf (0)
      • pfError (0)
    • React (6)
      • React 정리 (3)
      • React 오류 창고 (3)
    • C++ 코딩테스트 공부 (중단) (20)
      • c++ 백준 문제풀이 (15)
      • c++ 알고리즘 공부 (5)
    • Unity (3)
      • Unity 공부 (3)
    • WebRTC (2)
      • WebRTC 강의학습 정리 (0)
      • WebRTC 프로젝트 (1)
    • 김영한님의 스프링 강의 학습 (10)
      • 스프링 강의 목차 (1)
      • 인텔리제이 & 스프링 기초 (1)
      • 스프링 핵심 원리 (8)
    • 전공 지식 정리 (40)
      • interview (0)
      • Java (0)
      • 운영체제 (4)
      • 데이터베이스 설계 (10)
      • 소프트웨어 공학 (3)
      • 유닉스 (14)
      • 디지털 논리회로 (0)
      • 인공지능 (7)
      • js (0)
      • etc (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코테 알고리즘
  • 김영한 스프링 입문
  • 운영체제
  • 디지털 논리회로
  • 인공지능
  • 스프링 공부
  • 무서운 이야기
  • 노마드코더의 zoom클론코딩
  • Unity 공부
  • 김영한 스프링 강의
  • React&Spring 강의수강
  • Java 백준 문제풀이
  • 유닉스
  • 부트 jpa 게시판 프로젝트
  • 스프링 프로젝트
  • 데이터베이스 설계
  • 스프링부트 블로그 프로젝트
  • java
  • 김영한의 스프링 핵심 원리
  • 백준 c++
  • java 알고리즘
  • 스프링부트 프로젝트
  • Java 코테 나만의 팁
  • C++ 알고리즘

최근 댓글

최근 글

hELLO · Designed By 정상우.
daramG
자바 백준 1806번 문제 - 부분합
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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