코딩 -/백준 알고리즘 해설

백준 알고리즘 단계별 문제풀이 3 . for문 , 빠른 A+B

심프슨정리 2021. 6. 28. 20:11
반응형

백준 알고리즘 문제의 단계별 문제의 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를 풀어보았습니다.

 

반응형