[★1][백준8393번]합 (JAVA)
카테고리: BKJN
태그: Algorithm Java Coding Test
[★1][백준8393번]합 (JAVA)
8393번 문제 ☞ https://www.acmicpc.net/problem/8393
난이도 ☞ [★1]
합
- 문제
- n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
- 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
-
1부터 n까지 합을 출력한다.
예제입력 예제출력 3 6
내가 푼 풀이
이번 문제는 for
문을 활용하여 구현하는 부분입니다. 우선 제일 기본적인 Scanner
를 사용하여 출력하는 방법입니다.
[ 풀이 1 ]
메모리 :
17668KB
시간 :216ms
Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int i;
int total = 0;
for (i = 0; i <= n; i++) {
total = total + i;
}
System.out.println(total);
}
}
다음은 BufferedReader
를 활용하여 출력하는 방법입니다.
[ 풀이 2 ]
메모리 :
14068KB
시간 :120ms
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
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());
int total = 0;
for (int i = 0; i <= n; i++) {
total = total + i;
}
System.out.println(total);
}
}
마지막으로 for
문을 간결하게 정리하여 출력할 수도 있다. 원리를 이해하고 있다면 매우 쉽고 활용도가 높을 것이다. 아래의 코드는 Scanner
로 구현하였으나, BufferedReader
에서도 사용 가능하다. 코드는 아래와 같다.
[ 풀이 3 ]
메모리 :
17636KB
시간 :204ms
Scanner, for문 간결화 ```java import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int total = 0;
for (int i = 0; i <= n; i++) total += i;
System.out.println(total);
}
}
```
이번 문제에서도 보다시피 Scanner
보다는 BufferedReader
의 성능이 훨씬 좋음을 알 수 있었으며, for
문을 간결하게 표현할 수 있음을 볼 수 있다.
댓글 남기기