[BaekJoon] 5554번 - 심부름 가는 길 (java)

1. 문제

👉 문제 바로가기

- 조건

시간 제한 메모리 제한
1초 128MB


- 문제

승균이는 매일 학교, PC방, 학원에 다닌다. 반복되는 일상에 익숙해진 승균이는 이동시간을 단축해서 PC방에 더 오래 머물고 싶었다. 그래서 스톱워치를 들고 이동할 때마다 기록을 잰 후 집에 가서 분석해보기로 했다.

집에 도착한 승균이는 측정한 결과를 보는 데, 전부 초 단위로 기록되어있다! 맨날 놀기만 해서 총 이동 시간이 몇 분 몇 초인지 계산을 못 하는 승균이를 도와주자.

하루 동안 측정한 결과가 주어지면, 이날의 총 이동 시간이 몇 분 몇 초인지 출력하는 프로그램을 작성하시오.



- 입력

입력은 총 4줄이며, 한 줄에 하나씩 양의 정수가 적혀있다.
- 첫 번째 줄에 집에서 학교까지의 이동 시간을 나타내는 초가 주어진다.
- 두 번째 줄에 학교에서 PC방까지의 이동 시간을 나타내는 초가 주어진다.
- 세 번째 줄에 PC방에서 학원까지의 이동 시간을 나타내는 초가 주어진다.
- 마지막 줄에 학원에서 집까지의 이동 시간을 나타내는 초가 주어진다.
집에 늦게 가면 혼나기 때문에, 총 이동시간은 항상 1 분 0 초 이상 59 분 59 초 이하이다.



- 출력

총 이동시간 x 분 y 초를 출력한다. 첫 번째 줄에 x를, 두 번째 줄에 y를 출력한다.



- 예제

  입력      출력  
31
34
7
151
3
43
316
430
643
1253
44
2
5
10
15
30
1
0





2. 풀이


- 알고리즘

for 반복문을 사용해 이동시간을 4번 입력받고 이동시간의 합을 구한다.

for (초기식; 조건식; 증감식) {
    조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문 작성;
}




2개의 입력방식을 사용해서 결과를 출력한다.

  1. Scanner 클래스
  2. BufferedReader 클래스





2-1. Scanner 클래스

import java.util.Scanner;

public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        
        int sum = 0; // 이동시간의 총 합
        
        for(int i=0;i<4;i++){
            sum += sc.nextInt();
        }
        System.out.println(sum / 60 + "\n" + sum % 60);
    }
}

위와같이 객체를 생성할 때, Scanner(System.in) 에서 System.in 은 입력한 값을 Byte 단위로 읽는 것을 뜻한다.

int형 데이터를 입력받기 위해 nextInt() 메서드를 사용한다.

sum 은 이동시간의 총 합이다.
sum / 60 은 초의 총 합을 60(초)로 나눈 몫이므로 을 나타낸다.
sum % 60 은 초의 총 합을 60(초)로 나눈 나머지이므로 를 나타낸다.



[여기서 잠깐!]

Scanner에 대해 더 자세히 알고싶다면 여기 를 클릭하세요




2-2. BufferedReader 클래스 사용

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

public class Main{
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
        
        int sum = 0;
        
        for(int i=0;i<4;i++){
            sum += Integer.parseInt(br.readLine());
        }
        System.out.println(sum / 60 + "\n" + sum % 60);
    }
}

readLine() 메서드를 사용해 입력받은 값을 한 줄 통째로 읽어 String 으로 반환한다.

Integer.parseInt()을 사용해 String형을 int형으로 변환시켜준다.



[여기서 잠깐!]

BufferedReader 클래스에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.






3. Scanner VS BufferedReader 성능 비교

image

입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.





관련 페이지

Categories:

Updated:

Leave a comment