백준 알고리즘 단계별 문제풀이 3 . for문 , 빠른 A+B
백준 알고리즘 문제의 단계별 문제의 4번. for문 파트입니다.
<출처 - 백준 알고리즘 문제 - 단계별 문제풀이 for 파트 4번 >
C언어는 충분히 빠르고 , 이외의 언어는 손을 보겠습니다
C언어입니다.
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
int b,c;
for (int i=0;i<a;i++){
scanf("%d %d",&b,&c);
printf("%d\n",b+c);
}
}
C++입니다.
C++ 은 ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
3가지 구문을 추가해줍니다.
또 endl 대신 "\n"으로 처리해줍니다.
#include <iostream>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int a;
cin>>a;
int b,c;
for (int i=0;i<a;i++){
cin>>b>>c;
cout<<b+c<<"\n";
}
}
python입니다
sys.stdin.readline() 로 입력을 받으면 조금 더 빠른 입력을 받을 수 잇고 이를 int 형으로 형변환을 해줘야
개행문자 ("\n")등을 없애고 활용할 수 있다.
map()은 특정 범위내에 있는 집합형태의 것들을 원하는 하나의 것으로 바꿔주는 기능을 하는 것입니다.
map( int , 집합형태의 것)
import sys
a=int(sys.stdin.readline())
for i in range(0,a):
b,c=map(int, sys.stdin.readline().split())
print(b+c)
Java입니다.
우선 자바는 Scanner로 입력을 받을 시 알고리즘 문제를 풀 때 속도가 느려 문제를 풀어도 시간초과가 납니다.
이때는 BufferReader 를 사용하여 입력을 받아
BufferWriter로 출력을 해주어야합니다.
매 입력과 출력을 프로그램과 저장소를 왔다갔다 하지 않고 중간에 모든 데이터를 실어 한번에 나르는 개념이라고 이해하시면됩니다.
또 StringTokenizer라는 개념이 생소할 수 있지만, 이는 입력받은 문자열을 공백을 기준으로 분리하기 위함입니다.
우선
BufferedReader (임의의 버퍼리더이름) = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter (임의의 버퍼라이터이름) = new BufferedWriter(new OutputStreamWriter(System.out));
으로 선언하여 BufferedReader , BufferedWriter 를 선언합니다.
StringTokenizer temp; //문자열 분리를 위한 스트링토크나이저 선언입니다.
(임의의 버퍼리더이름).readLine(); 을 이용해 문자열을 입력받습니다
이를 Integer.parseInt(스트링값); 으로 정수로 변경해준 뒤 이를 포문에서 갯수로 취급합니다.
또 포문 내에서는
temp = new StringTokenizer(br.readLine()); 로 temp라는 이름으로 읽어들인 문자열을 스트링 토크나이저로 받았으며,
temp.nextToken() 을 사용해 분리된 문자열을 하나씩 취급합니다
또 sum에 두 수의 합을 담아
bw.write(sum + "\n"); 을통해 두 수의 합을 줄단위로 넣고
bw.flush();를통해 모두 출력합니다.
import java.util.*;
import java.io.*;
class Main {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer temp; //문자열 분리를 위한 스트링토크나이저
int num = Integer.parseInt(br.readLine()); //총 입력받을 문자 수
for(int i=0; i<num; i++) {
temp = new StringTokenizer(br.readLine());
int a = Integer.parseInt(temp.nextToken());
int b = Integer.parseInt(temp.nextToken());
int sum = a+b;
bw.write(sum + "\n"); //출력
}
bw.flush(); // 남아있는 데이터를 모두 출력
bw.close(); //닫음
}
}
이것으로 4번째 기본 for문 문제인 빠른 A+B를 풀어보았습니다.