알고리즘/백준

[백준 18311] 왕복

https://www.acmicpc.net/problem/18311

 

18311번: 왕복

첫째 줄에 정수 N, K가 공백을 기준으로 구분되어 주어진다. (1≤N≤100,000) 단, K는 항상 왕복 거리보다 작은 양의 정수 혹은 0으로 주어진다. 둘째 줄에 1번부터 N번까지 각 코스의 길이가 공백을

www.acmicpc.net

 

1. 유형

구현

 

2. 풀이

반복문을 돌면서 K에서 입력값을 뺴준다.

가는 경우, 오는 경우를 나눠서 생각.

0미만인 경우 index+1을 출력

 

3. 코드

import java.io.*;
import java.util.*;

public class Main {
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = stoi(st.nextToken());
		long K = Long.valueOf(st.nextToken());
		int arr[] = new int[N];
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<N; i++) {
			arr[i] = stoi(st.nextToken());
		}
		boolean flag = false;
		for(int i=0; i<N; i++) {
			K-=arr[i];
			if(K<0) {
				System.out.println(i+1);
				flag=true;
				break;
			}
		}
		if(!flag) {
			for(int i=N-1; i>=0; i--) {
				K-=arr[i];
				if(K<0) {
					System.out.println(i+1);
					break;
				}
			}
		}
	}
	static int stoi(String s) {
		return Integer.valueOf(s);
	}
}
//가는 경우 0미만인 경우 인덱스 +1 출력
//오는 경우 0미만인 경우 인덱스+1 출력