[★1][백준8393번]합 (JAVA)

Date:     Updated:

카테고리:

태그:

[★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문을 간결하게 표현할 수 있음을 볼 수 있다.

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기