[백준] 14469번 : 소가 길을 건너간 이유3 - JAVA

SUBNY·2023년 8월 2일
0

백준

목록 보기
9/22
post-thumbnail

문제 📕

백준문제캡쳐

(https://www.acmicpc.net/problem/14469)





접근 방법 🧐

  • 한국어로는 "모든 소가 농장에 입장하는 데 걸리는 최소 시간을 출력한다" 라고 써져있는데
    원문으로는,

    Please determine the minimum possible time at which all the cows could have completed processing.

→ 모든 과정이 끝날 때까지! 첫번째 소의 도착부터 마지막 소의 검문까지!

  • 동시에 검문 받을 수 없다

  • 도착 시간과 검문시간이 같을 수도 있다.
    → ex] 3분에 검문시간이 각각 5 2인 소들이 왔을 때, 결국 이 두마리의 소요시간은 3+5+2
    → ex] 3분에 검문시간이 각각 3 3인 소들이 왔을 때, 결국 이 두마리의 소요시간은 3+3+3
    크게 고려 안해도 되는 조건같아서 따로 처리를 안해줬다.



1. 이차원 배열에 각 도착시간과 검문시간을 입력받아 저장한다.
2. 그리고 도착시간 기준으로 정렬해줬다.
3. for문으로 조건에 따라 endTime(최소시간 즉, 출력값)
    3-1. i번째의 도착시간이 i-1번째 소까지의 모든 과정 시간, endTime보다 나중이라면
          i번째의 도착시간+검문시간이 총 소요시간이 될 것.
    3-2. i번째의 도착시간이 i-1번째 소까지의 모든 과정 시간이 끝나기 전이거나 같다면,
          i-1번째의 소가 검문이 끝나자마자 검문하러 들어갈 테니, 검문하는데 걸리는 시간만 더해주면 된다.



내가 쓴 코드 ✍️

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

public class Main {
    public static void main(String[] args) throws IOException  {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        int endTime = 0;
        int cowArr[][] = new int[N][2]; //[n][0] 도착시간, [n][1] 검문시간

        for(int i=0;i<N;i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            cowArr[i][0] = Integer.parseInt(st.nextToken());
            cowArr[i][1] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(cowArr, (o1,o2)-> o1[0]-o2[0]);
        
        for(int i=0;i<N;i++){
            if(endTime < cowArr[i][0]){
                endTime=cowArr[i][0]+cowArr[i][1];
            }
            else
                endTime += cowArr[i][1];
        }
        bw.write(endTime+"");
        bw.flush();
        bw.close();
    }
}

jjansubin

느낀점 📖

다국어 문제가 한국어로 번역됐을때는 의미가 모호할 때가 있다.
전에 문제 풀었을 떄도, "입장시간..이라.. 좀 애매한데..?" 했던 기억이 있었다. 그럴 때는 그냥 원문을 보는게 문제 이해에 좀 더 도움이 된다.

이전에 풀어봤던 기억이 있어서 이클립스 말고 바로 백준 제출하면서 코드를 짰다. 그랬더니, 세미콜론이라던가 system을 systme 라는 오타라던가 컴파일에러가 연달아 세개가 뜨고, 예제 입력 안 해보고 제출을 하다보니 틀렸습니다!! 까지.. 어우 결국 이클립스 켰다^^..ㅎㅎ
자만하지말자

profile
대체할 수 없는 풀스택 개발자가 되고 싶어요

2개의 댓글

comment-user-thumbnail
2023년 8월 2일

헉 배열이나 Map으로 잘 안풀려서 고민이었는데, 2차원 배열이라니~ 잘 보고 갑니다 ^^

1개의 답글