본문 바로가기

알고리즘/프로그래머스

[211212] 직사각형 별 찍기

사용자 입력값이 5와 3일 경우 

*****

*****

***** 

이렇게 출력되어야 한다.

import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
          for(int i = 0; i < b; i++){
        	for(int j = 0; j < a; j++) {
        		System.out.print("*");
        	}
        	System.out.println(""); //println(); 추천
        }
    }
}

오답 : 눈이 따라가는대로 처음에 5개를 찍고 한줄 내려서 5개 5개 하는 식으로 생각하다보니 a로 먼저 for문 돌려야 겠다는 생각에 풀이가 늦어짐

 

다른 식의 좋은 풀이

import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
 		StringBuilder sb = new StringBuilder();
        
        for(int i = 0; i < a; i++) {
        	sb.append("*");
        }
        for(int j = 0; j < b; j++) {
        	System.out.println(sb.toString());
        }
    }
}

 

20

말로만 듣던 별찍기를 해봤다! 근데 제공된 솔루션 메서드에서 System.out.println(a + b); 이렇게 적혀있어서 문제 풀기 전부터 당황스러웠다. 사용자 입력값인 a랑 b를 더해서 어떻게 별을 찍으라는거냐고.. 왜이렇게 헷갈리게 해 둔걸까? 차라리 적어주지 말지. 그거 빼면 재밌었다. 로또 등수보다 훨씬 쉽고!