티스토리 뷰
문제
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.
Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
자세한 설명 및 다른 언어의 경우는 이 글에 설명되어 있다.
이 블로그 글에서 BOJ의 기타 여러 가지 팁을 볼 수 있다.
입력
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
출력
각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.
예제입력
5
1 1
12 34
5 500
40 60
1000 1000
예제 출력
2
46
505
100
2000
문제풀이
//입력값 받기, 같은 폴더내에 input.txt 생성
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
solution(input);
function solution(N) {
let size = input[0];
let temp;
let resultString='';
for (let i = 1; i <= size; i++) {
temp = input[i].toString().split(' ');
resultString+=((parseInt(temp[0]) + parseInt(temp[1]))+'\n');
}
console.log(resultString);
}
설명
일반적인 A+B의 문제가 아닌, 빠른 A+B의 문제이다.
입력된 숫자만큼 console.log()를 통해 바로 결과를 보여주면 편하고 직관적이지만
시간초과를 하지 않고 푸는것이 문제의 핵심이기때문에. console.log()함수를 제일 최소한으로 1번만 사용하는것이 문제를 푸는 key이다.
결과가 똑같이 출력만 되면 됨으로, 계산된 값을 '\n'으로 구별하며 계속 문자열에 저장시켜줬다.
결과적으로 문자열 변수 1개에 모든 결과값이 줄바꿈으로 구별해서 들어가고
함수가 종료되기전에 console.log()를 통해 한번만 출력해주면 된다.
console.log()또한 함수를 불러오는 행위이기때문에, 쓸데없이 문자열 변수를 만들고 저장했지만 이 과정이 많이 반복 될 수록 console.log()를 호출하는것보다 빠르다.
출처
https://www.acmicpc.net/problem/15552
'Algorithm' 카테고리의 다른 글
[JavaScript ] BeakJoon 2577 숫자의 개수 (0) | 2021.08.14 |
---|---|
[JavaScript ] BeakJoon 1110 더하기 사이클 (0) | 2021.08.14 |
[JavaScript ] BeakJoon 2884 알람시계 (0) | 2021.08.04 |
[JavaScript ] BeakJoon 2753 윤년 (0) | 2021.08.04 |
[JavaScript ] BeakJoon 9498 시험 성적 (0) | 2021.08.04 |
- Total
- Today
- Yesterday
- ec2 instance connect is unable to connect to your instance. ensure your instance network settings are configured correctly for ec2 instance connect. for more information
- BOJ #JS
- mysql date between # mysql date between 대소 비교 연산자
- React filter #js Includes #React Filter includes
- mysql date
- mysql date type
- AWS #인바운드 #SSH #인스턴스 연결
- PDF #pdfkit
- 이미지 전송 # 이미지 업로드 #이미지 여러장 #이미지 여러장 업로드 #react 이미지 업로드 #react 이미지 여러장 업로드
- supported: linux/amd64
- Mac docker.for.mac.host.internal
- excel 파일 만들기 #node.js #express excel 파일 만들기 #데이터 입력해서 excel 파일 만들기
- Express multer #Express File 저장 #node.js
- node.js 파일 저장
- node.js #node.js pdf만들기 #node.js pdfkit
- PoolCluster : Error: connect ECONNREFUSED 127.0.0.1:3306)
- mysql date between performance
- docker # docker build # m1 docker build
- react #react-spinners #modal loading #overlay #로딩창 #react 로딩창 만들기
- FormData #FormData 파일전송 #FormData append json # React FormData File #React FormData append Json
- linux/amd64/v2
- ERROR: failed to solve: no support for running processes with linux/amd64/v3 platform
- Swal #sweetalert2 #alert #알림창 띄우기 #react swal
- Procedure #mysql #mysql Procedure #mysql 반복문 #Procedure 반복문 #mysql insert 반복문
- Pytorch #Yolov5 #Segementation
- reack-cookies #아이디 저장하기 #react 아이디 저장 #react cookie #리엑트 아이디 저장하기
- JavaScript #Programmers #lvl2 #프로그래머스 오픈채팅방 # 오픈채팅방 문제
- react #img 전송
- docker mysql
- see ec2 instance connect prerequisites at https://docs.aws.amazon.com/awsec2/latest/userguide #인스턴스 연결 안됨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |