[BOJ 2439] 별 찍기 -2 JAVA

popolarburr·2023년 1월 9일
0
post-thumbnail

1. 문제의 이해

  • 입력된 숫자를 활용해 반복문을 가지고 별을 찍는 문제
  • 입력된 값을 잘 활용하는 것이 관건(반복문 제어문에 활용)

2. 첫 풀이

  • 당연히 스캐너를 통해 입력받고 이를 통해 반복문을 돌림 여기서 고민을 했다!

예제 입력처럼 입력하면 뒤부터 "*" 이 채워지니까 5를 입력하고 앞이 공백이니까 어떻게 활용하면 좋을까?

  • 루프를 돌 때 마다 인덱스 번호만큼 뒤에서 별이 찍히는 것을 파악했다. 그렇게 인덱스를 0 시작이 아닌 1 시작으로 두고 입력값까지 돌리기로 했다.
  • 또한 뒤에서부터 채워야하기에 입력값 - 인덱스값까지는 띄어쓰기를 넣어줬다.

그렇게 한 풀이는 ,


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        sc.close();

        String result;
        int ans;

        for(int i=1; i<=count; i++) {
            ans = count - i;
            result = "";

            for(int j=0; j<ans; j++) {
                result += " ";
            }
            result += "*".repeat(i);

            System.out.println(result);
        }
    }

3. 아쉬운점

  • 뭔가 더 좋은 풀이 혹은 깔끔한 풀이가 있을 것 같다. 그러나 이번 문제는 프로그래밍을 배우는 단계에서 흔히 접하는 문제였기에 잘 풀 수 있을거라고 확신하고 다른 사이트 혹은 블로그를 일절 참조하지 않았다. 그랬다 보니 결과만 보면 만족스럽지 못했다. 뭔가 좋은 코드가 아닌 것 같은 너낌..?

3. 정리

  • 사실 어려운 문제는 아니였다. 그러나 내 기준에서는 생각을 좀 해야했다. 루프문이 실행될 때마다 출력되는 값을 보고 일정한 규칙을 발견해야만 했다. 앞으로는 시각을 좀 기르고 다양하게 접근하는 방법을 고안해야 할 것 같다.
profile
차곡차곡

0개의 댓글