티스토리 뷰
Solved.ac Class 완전정복 프로젝트
Class : 1 ~ 1 ++
링크
https://www.acmicpc.net/problem/10869
문제
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A% B(나머지)를 출력하는 프로그램을 작성하시오.
입력
두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)
출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%BA% B를 출력한다.
접근방법
입력받은 데이터를 요구사항에 맞춰 여러 가지로 출력할 수 있는지 묻는 문제이다.
이 문제를 풀고 나서, 생각보다 시간이 오래걸려 BufferedReader와 Scanner를 사용하며 사용 속도를 비교하였다.
자료는 Stranger's LAB 블로거님의 포스팅을 참고하여 만들었다. BufferedReader 뿐 아니라 write도 활용한 자료가 있으니, 성능을 확실히 체감할 수 있는 좋은 포스팅이라 공유한다.
1. BufferedReader를 사용한 경우
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
Main test = new Main();
}
public Main() throws IOException {
//입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String[] num = br.readLine().split(" ");
//연산 결과들 저장
int[] answer = solution(Integer.parseInt(num[0]),Integer.parseInt(num[1]));
//결과를 Builder 합한다
for (int ans : answer){
sb.append(ans+"\n");
}
//한번에 출력
System.out.println(sb);
}
public int[] solution(int num1,int num2){
int[] answer = new int[5];
answer[0]= num1 + num2;
answer[1]= num1 - num2;
answer[2]= num1 * num2;
answer[3]= (int)(num1 / num2);
answer[4]= num1 % num2;
return answer;
}
}
2. Scanner를 사용한 경우
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Main test = new Main();
}
public Main(){
//입력
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
//연산결과 저장
int[] answer = solution(num1,num2);
//sout 한번에 출력
for (int result : answer){
System.out.println(result);
}
}
public int[] solution(int num1,int num2){
int[] answer = new int[5];
answer[0]= num1 + num2;
answer[1]= num1 - num2;
answer[2]= num1 * num2;
answer[3]= (int)(num1 / num2);
answer[4]= num1 % num2;
return answer;
}
}
결과
32267078 : Stranger's Lab 님의 코드
32269999 : Main으로 모든 코드 통합
32266843 : BufferedReader + Stringbuilder
32266179 : Scanner
이렇게 작은 데이터도 차이가 나는데.. 아마 입력및 출력이 길수록 이 차이는 더 클 것이라 생각된다.
기본 문제에서 이런 디테일을 연습하면, 더 효율적으로 코딩을 할 수 있을 것 같다.
'공부 > 코딩 테스트 준비' 카테고리의 다른 글
[백준] 1085 - 직사각형에서 탈출 (0) | 2021.08.18 |
---|---|
[백준] 1018 - 체스판 다시 칠하기 JAVA (0) | 2021.08.18 |
[백준] 2739 - 구구단 JAVA (0) | 2021.08.16 |
[백준] 2675 - 문자열 반복 JAVA (0) | 2021.08.16 |
[백준] 2577 - 숫자의 개수 (0) | 2021.08.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준
- Database
- DP
- 아기상어미워
- BFS
- 카카오
- looker instance 접속
- 프로그래머스
- DFS
- JNDI연동
- dml
- 아기상어나쁜상어
- 실패일기
- 9019
- Spring
- 재귀
- 브루트포스
- value annotation
- db
- 유클리드-호제법
- 파이썬
- 하루 회고
- java
- 플루이드 와샬
- 프로그래머스 문제정복
- Python
- 코딩테스트
- 그래프 탐색
- 자바
- looker core
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함