이 영역을 누르면 첫 페이지로 이동
Stranger's LAB 블로그의 첫 페이지로 이동

Stranger's LAB

페이지 맨 위로 올라가기

Stranger's LAB

프로그래밍과 관련하여 다양한 알고리즘 문제를 풀어보고, 프로그래밍 언어를 이해해 볼 수 있도록 돕고자 만든 블로그 입니다.

[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! - JAVA [자바]

  • 2022.06.21 13:36
  • JAVA - 백준 [BAEK JOON]/입출력과 사칙연산
글 작성자: ST_
728x90





 


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

 

18108번: 1998년생인 내가 태국에서는 2541년생?!

ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다. 불교 국가인 태국

www.acmicpc.net

 

 

 

 

 

 

 

 





  • 문제

 

 

 

 

 

 

간단한 수리 추론 문제다!

 

 

 

 

 

 

 

 





  • 알고리즘 [접근 방법]

 



문제 자체는 어렵지 않게 풀었으리라 본다.

 

그래도 설명하자면, 불기 연도가 주어질 때 이를 서기 연도로 바꾸어 출력하라는 것이다.

그럼 불기를 어떻게 알고 서기로 바꾸어야 할까?

 

문제속에 답이 있듯, 1998년생(서기)의 경우 불기로는 2541년생이라는 것이다. 즉, 서기와 불기는 543년 차이가 있음을 알 수 있다.

 

그러면 불기가 주어졌을 때, 주어진 불기에 543년을 빼준 값. 이 값이 서기가 되겠다.

 

 

 

 

 

 

 

 

 

 





  • 2가지 방법을 사용하여 풀이한다.

 



알고리즘 풀이에서의 대표적인 입력 방식 두 가지가 있다. Scanner와 BufferedReader인데, 각 입력 방식을 통해 성능을 비교해보고자 한다.

 

1. Scanner

2. BufferedReader

 

 

 

 






  • 풀이





- 방법 1 : [Scanner]

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		
		int year = in.nextInt();
		
		System.out.println(year - 543);
	}
}

 

 

크게 설명할 것이 없는 가장 기본적인 방법이라 할 수 있겠다..

 

 











- 방법 2 : [BufferedReader]

 

 

 

입력 방법을 Scanner 대신 BufferedReader 을 사용하여 풀이하는 방법이다. 단, BufferedReader 는 한 줄 단위로 읽은 뒤 문자열로 반환하기 때문에 주어지는 입력에 대한 문자열을 정수로 변환해주는 과정이 필요하다.

이를 위해서는 Integer 클래스의 parseInt()라는 메소드를 사용하면 되는데, 숫자형식의 문자열에 대해 정수형으로 반환해주는 역할을 한다.

 

 

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));
		
		String s = br.readLine();	// 한 줄을 읽고 문자열로 반환함
		int year = Integer.parseInt(s);	// 반환 된 문자열을 정수로 바꿔줌
		
		System.out.println(year - 543);
	}
}

 

 

 

위와 같이 풀 수 있다.

 

 

 

 

 

 

 

 

 

 





  • 성능






 

채점 번호 : 44791799  -  방법 2 : BufferedReader

채점 번호 : 44791790  -  방법 1 : Scanner 

 

 

 








  • 정리

 



이 번 문제 또한 어려운 점은 없었을 것이다. 위 처럼 두 가지 입력 방식을 보여준 이유는 앞으로 입력 방식에서 BufferedReader 을 사용하게 되는 일이 많을 것이라 이렇게 보여드린 것이다.

 

위 결과를 보면 Scanner보다 BufferedReader가 과정이 하나 더 거쳐감에도 빠른데, 이는 Scanner가 입력을 읽어들이는 과정에서 정규식 검사가 상당히 오래걸리기 때문이다. 이러한 이유로 대개 자바로 알고리즘을 푸는 많은 분들의 경우 BufferedReader을 사용하여 입력을 읽는다.

 

혹시 어렵거나 이해가 되지 않은 부분이 있다면 언제든 댓글 남겨주시면 최대한 빠르게 답변드리겠다.

 

 



저작자표시 비영리 변경금지 (새창열림)

'JAVA - 백준 [BAEK JOON] > 입출력과 사칙연산' 카테고리의 다른 글

[백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]  (6) 2022.09.06
[백준] 10926번 : ??! - JAVA [자바]  (0) 2022.06.17
[백준] 25083번 : 새싹 - JAVA [자바]  (2) 2022.05.07
[백준] 2588번 : 곱셈 - JAVA [자바]  (15) 2020.02.09
[백준] 10430 번 : 나머지 - JAVA [자바]  (6) 2020.02.09

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]

    [백준] 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 - JAVA [자바]

    2022.09.06
  • [백준] 10926번 : ??! - JAVA [자바]

    [백준] 10926번 : ??! - JAVA [자바]

    2022.06.17
  • [백준] 25083번 : 새싹 - JAVA [자바]

    [백준] 25083번 : 새싹 - JAVA [자바]

    2022.05.07
  • [백준] 2588번 : 곱셈 - JAVA [자바]

    [백준] 2588번 : 곱셈 - JAVA [자바]

    2020.02.09
다른 글 더 둘러보기

정보

Stranger's LAB 블로그의 첫 페이지로 이동

Stranger's LAB

  • Stranger's LAB의 첫 페이지로 이동

검색

나의 외부 링크

  • st-github

공지사항

  • 공지 - 블로그 사용 설명서

메뉴

  • 홈
  • 방명록

카테고리

  • 전체 카테고리 (267)
    • Java (5)
    • JAVA - 백준 [BAEK JOON] (177)
      • 입출력과 사칙연산 (14)
      • 조건문 (7)
      • 반복문 (11)
      • 1차원 배열 (7)
      • 함수 (3)
      • 문자열 (10)
      • 기본 수학 1 (8)
      • 기본 수학 2 (6)
      • 2차원 배열 (0)
      • 정렬 (10)
      • 재귀 (4)
      • 브루트 포스 (5)
      • 집합과 맵 (0)
      • 기하 1 (5)
      • 정수론 및 조합론 (12)
      • 백트래킹 (8)
      • 동적 계획법 1 (15)
      • 누적 합 (0)
      • 그리디 알고리즘 (5)
      • 스택 (5)
      • 큐, 덱 (7)
      • 분할 정복 (9)
      • 이분 탐색 (7)
      • 기타 문제 (17)
      • 별 찍기 문제 모음 (2)
    • C++ - 백준 [BAEK JOON] (46)
      • 입출력과 사칙연산 (14)
      • 조건문 (7)
      • 반복문 (11)
      • 1차원 배열 (7)
      • 함수 (3)
      • 문자열 (0)
      • 기타 문제 (4)
    • 자료구조 (18)
      • Java (18)
    • 알고리즘 (11)
      • Java (11)
    • 프로그래밍 기초 (6)
    • 이모저모 (2)
    • 일상의 글 (2)

최근 글

정보

ST_의 Stranger's LAB

Stranger's LAB

ST_

블로그 구독하기

  • 구독하기
  • 네이버 이웃 맺기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © ST_.

티스토리툴바