백준1000.A+B

Muhly·2023년 3월 18일
0

baekjoon

목록 보기
1/8

안녕하세요🤗10기ssafy를 목표로 열심히 달리고 있는 Muhly라고 합니다.저의 벨로그는 저의 창작물도 있겠지만 다른 유명한 강사님들과 블로거분들의 글들이 많이 포함하고 있습니다.이 벨로그는 저의 스터디 노트와 일상 기록용입니다.같이 공부하실 분 있으시면 연락 부탁드려요

1000번: A+B

2가지의 입력방법을 이용하여 풀이하겠습니다.

출력에서 System클래스 (System.out.println()),BufferedReader, StringBuilder,StringBuffer을 이용했습니다.

이와 반대로 입력 방법 또한 여러 가지가 있습니다.


✏️방법1

가장 기초적인 입력방법입니다.

💡 Scanner사용방법
  1. Scanner클래스를 import 해줍니다.
import java.util.Scanner;

Scanner 패키지는 java.util패키지에 있기 때문에 java.util.Scanner;를 꼭 해주어야 합니다. 그리고 반드시 Scanner의 첫 단어는 대문자로 써주어야 합니다.

  1. 객체를 생성해줍니다.
Scanner in = new Scanner(System.in);
//Scanner 객체명 = new Scanner(Sysyem.in);

위와같이 객체를 생성해주는데 Scanner(System.in)에서 System.in은 입력한 값을 Byte단위로 읽는것을 뜻합니다.

그리고 객체명은 자유롭게 선언해주면 되시는데 보통 in, scan sc를 많이 씁니다.

  1. 입력을 받습니다.
//Reference Type
	//>>Class Type-String Class
	String 문자열_space = in.next();
	String 문자열_Enter = in.nextLine();

//Primitive Type
	//>>boolean Type
	boolean 부울 = in.nextBoolean();

//Numeric Type
	//>>Integer Type
	byte 바이트 = in.nextByte();
	short 쇼트 = in.nextShort();
	int정수 = in.nextInt();
	long= in.nextLong();

//Floating Point Type
	double 더블형 = in.nextDouble();
	float 플롯 = in.nextFloat();

이런식으로 자료형에 맞게 입력해주면 된다

만약 입력한 데이터가 변수 자료형에 위반되면 아래와 같은 에러가 뜨니 주의하도록 하자.

Exception in thread “main” java.util.inputMismatchException

보통 생기는 경우는

in.nextInt()에 int자료형 범위를 넘어가는 수를 입력하거나, 문자를 입력하는 경우 in.nextBoolean()에 “True(true,TRUE)”,False(false,FALSE)같은 boolean자료형 외의 문자, 숫자를 입력하는 경우.

위 두 가지가 가장 에러를 많이 일으키는 케이스다.

참고로 String입력 방법에 in.next()와 in.nextLine()이 있는데 두 가지는 입력 받는 방식이 다르다.

  • in.next():문자열 입력시 공백 전까지 받음
  • in.nextLine():문자열 입력시 Enter입력 전까지만 받음

상황에 맞게 선택해주면되지만 next의 경우 에러가 발생할 수 있는 경우가 많아 대부분 문제에서는 행 단위로 입력받는 일이 다수이니 문자열 입력 형태로는 in.nextLine()을 쓴다.


✏️방법2_1

BufferedReader을 쓰는 방식이다.BufferedWriter와 객체 생성방법이 매우 유사하다.BufferedReader가 Scanner보다 성능이 좋으니 앞으로 이걸 쓰면 좋다.

BufferedReader의 경우 문자열을 받는 대표적인 방법은 readLine()과 read()이다. 둘의 차이는

readLine():한 행을 읽어온다.

read():한 문자만을 읽어온다.

그래서 특별한 경우가 없는 한 대부분 readLine()을 쓴다.

readLine()을 통해 입력 받아 연산하는 방법 두 가지를 이야기 하겠다.

readLine()은 한 행을 전부 읽기 때문에 공백단위로 입력해 준 문자열을 공백단위로 분리해주어야 문제를 풀 수 있다.

문자열 분리 방법에는 두 가지가 있다.

  1. StringTokenizer클래스를 이용하여 분리해주는방법
  2. split()을 이용하는 방법

StringTokenizer이 성능면에서 좋다고 한다. 그래서 단순규칙으로 문자열을 분리해줄 때는 StringTokenizer을 애용하도록 하자!!!

객체 생성할때 StringTokenizer(”문자열”, 구분자);을 해주면 된다.

구분될 변수를 꺼낼때는 차례대로 nextToken();을 해주면 문자열을 반환해준다.이때 반환시킨 문자열은 반환됨과 동시에 해당 객체에서 사라지게 된다.

그리고 문자열을 반환했으니 Integer.parseInt()로 int형으로 변환시켜준다.


✏️방법2_2

두 번째 방법은 br.readLine()을 통해 읽어온 것을 split(””)하여 공백 단위로 나눠준 뒤 String배열에 각각 저장하는 방법이다.

쓰기에는 이 방법이 더 간단하고 보기 편하지만 나중에 문자열을 다루게 되고 데이터 양이 많아지게 되면 StringTokenizer보다 성능이 낮아 수행시간 차이가 발행하게 된다.



출처:https://st-lab.tistory.com/

profile
https://muhlysstudynote.tistory.com/-> 블로그 이전하였습니다

0개의 댓글