https://www.acmicpc.net/problem/10950
10950번: A+B - 3
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
- 문제

총 N번의 테스트를 진행하기위해 N을 입력후, 서로다른 정수형 변수 A,B를 선언한뒤 두값에 입력을 받는다.
이후 A+B-3의 계산을 걸친 결과값만을 출력하도록 한다.
단, 출력값에서의 줄바꿈은 필수이다.(println)
- 코드 1
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
//N번 테스트할껀지 정하기
int N=in.nextInt();
int arr[]=new arr[N]
//각 배열 원소마다 입력받은A와 B를 더해주어 i번째 배열에 저장
for(int i =0; i<N; i++){
int A=in.nextInt();
int B=in.nextInt();
arr[i]=A+B;
}
in.close();
for(int k:arr){
System.out.println(k);
}
}
}
for(int k:arr){
System.out.println(k);
}
을 풀어서 쓰면
for(int i = 0; i < arr.length; i++) {
int k = arr[i]
}
이다.
for(변수 선언 부 : 배열){
// 내용;
}
for문안에서 어떻게 돌아가는지 머리속으로 컴파일 하기 어려운만큼 알기쉽게 가시화 해서 그림으로 그려봤다. 이해하는데 도움이 되었으면 좋겠다.

- 결과

- 코드 2
import java.io.BufferedReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
StringTokenizer st;
StringBuilder sb= new StringBuilder();
for(int i=0; i<N; i++){
st=new StringTokenizer(br.readLine()," ");
sb.append(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken()));
sb.append('\n');
}
System.out.println(sb);
}
}
여기서 StringTokenizer(문자열 자르기)가 평소와 쓰던 형태와 약간 다르게 쓰인걸 볼 수 있다
//평상시
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(br.readLine(), " ");
int A=Integer.parseInt(st.nextToken());
int B=Integer.parseInt(st.nextToken());
.
.
.
//for문안에 StringTokenizer전개
StringTokenizer st;
for(int=0; i<N; i++){
st=new StringTokenizer(br.readLine(), " ");
}
BufferedReader에서 readLine()메소드를 통해 문자열을 읽어오게 된다(Scanner의 nextLine()과 동일). 그리고 StringTokenizer은 문자열을 분리시켜주는 역할을 한다(Split과 동일). 입력은 한 줄 씩 읽어오므로, 매 반복문마다 새로운 StringTokenizer을 선언하면서 일일이 분리시켜서 받아 와야하므로 new부분을 for안에서 선언했다.
- 결과

- 코드 1,2 성능 비교

