Algorithm/Baekjoon(Java)

[백준/JAVA] 2741 : N 찍기

비망노트 2022. 7. 9. 14:59
문제

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.

 

출력

첫째 줄부터 N번째 줄 까지 차례대로 출력한다.

 

예제 입력 예제 출력
5 1
2
3
4
5

 

⭕ 풀이

import java.io.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        
        for(int i=1;i<=n;i++){
            bw.write(i+"\n");
        }
        bw.flush();
    }
}

✅  메모리 26196kb  시간 208ms

flush를 for문 내에 넣고 실행했을경우 메모리33596kb 시간972ms 로 비효율적으로보인다.

 

다른분들의 코드는 StringBuilder를 많이 사용하시길래 StringBuilder append로 다시 풀어봤다

import java.io.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        
        StringBuilder sb = new StringBuilder();
        for(int i=1;i<=n;i++){
            sb.append(i).append("\n");
        }
        System.out.print(sb);
    }
}

❗ StringBuilder 문자열빌더로 sb.append로 문자를 합친후 마지막에 sb에 담아두걸 출력하는것같다.

이렇게하니 메모리와 시간 17232kb 시간 164ms로 모두 훨씬 줄었다.

 

 

 

 

 

-출처

https://www.acmicpc.net/problem/2741

 

'Algorithm > Baekjoon(Java)' 카테고리의 다른 글

[백준/JAVA] 11021 : A+B - 7  (0) 2022.07.10
[백준/JAVA] 2742 : 기찍 N  (0) 2022.07.10
[백준/JAVA] 15552 : 빠른 A+B  (0) 2022.07.09
[백준/JAVA] 8393 : 합  (0) 2022.07.08
[백준/JAVA] 10950 : A+B - 3  (0) 2022.07.07