💡문제 풀이/백준 - JAVA

별 찍기 - 1 / 2438

뇌 리셋은 기본이지 2023. 11. 17. 00:44

정보

분류 : 반복문

 

문제

문제링크

 

풀이

  • 풀이 1 (Scanner + println()) → 360ms
import java.util.*;

public class Main {
  public static void main(String args[]) {
      Scanner sc = new Scanner(System.in);

      int a = sc.nextInt();

      for(int i = 0 ; i < a ; i++) {
          for(int j = 0 ; j <= i ; j++) {
              System.out.print("*");
          }
          System.out.println();
      };
  }
}
  • 풀이 2 (BufferedReader + BufferedWriter) → 140ms
import java.io.*;

public class Main {
  public static void main(String[] args) throws IOException {
      // InputStream : 자바의 가장 기본이 되는 입력 스트림
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      // OutputStreamWriter : 자바의 가장 기본이 되는 출력 스트림
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

      int a = Integer.parseInt(br.readLine());

      for(int i = 0 ; i < a ; i++) {
          for(int j = 0 ; j <= i ; j++) {
              bw.write("*");
          }
          bw.write("\n");
      };

      br.close();

      bw.flush();
      bw.close();
  }
}

 

풀이 후기

이중 for문을 사용하여 첫 번째 for문은 행을 표현했고, 두 번째 for문은 각 행에 그려질 별(*)을 표현했다. 이 문제는 다른 블로그를 참고하여 문제를 풀었다. 자력으로 풀지 않아서 여러가지 방법으로 풀었다. 대략 아래와 같다.

a = 5
순서 :  i, j 
0, 0 (true) 0, 1 (false) 0, 2 (false) 0, 3 (false) 0, 4 (false)
1, 0 (true) 1, 1 (true) 1, 2 (false) 1, 3 (false) 1, 4 (false)
2, 0 (true) 2, 1 (true) 2, 2 (true) 2, 3 (false) 2, 4 (false)
3, 0 (true) 3, 1 (true) 3, 2 (true) 3, 3 (true) 3, 4 (false)
4, 0 (true) 4, 1 (true) 4, 2 (true) 4, 3 (true) 4, 4 (true)

이중 for문은 어떤 구조로 돌아가는지부터 이해하는게 좋을 듯 하다. 안쪽 for문이 true일 때엔 j를 1씩 증감시켜 안쪽 for문만 돌고, 안쪽 for문이 false면 바깥 for문으로 가면서 i가 1 증감되는 구조. 별찍기는 해도해도 이해 빠르게 되지 않아 문제를 풀기까지 오래 걸린다🤯

reference

https://darmk.tistory.com/entry/Beakjoon-%EB%B0%B1%EC%A4%80-2438-%EB%B3%84%EC%B0%8D%EA%B8%B0-1-java

'💡문제 풀이 > 백준 - JAVA' 카테고리의 다른 글

A+B - 5 / 10952  (1) 2023.11.17
별 찍기 - 2 / 2439  (0) 2023.11.17
A+B - 8 / 11022  (0) 2023.11.16
A+B - 7 / 11021  (0) 2023.11.16
빠른 A+B / 15552  (0) 2023.11.16