1. 직사각형 별찍기

김영민·2022년 1월 27일
0

문제📃

1. 문제 설명

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

2. 제한 조건

n과 m은 각각 1000 이하인 자연수입니다.

3. 입출력 예

입력
5    3

출력
* * * * *
*
* * * *
*
* * * *


풀이

나의 정답👨‍💻

import java.util.Scanner;

public class RectangleStar {

    public static void main(String[] args) {
    
        // sc라는 변수에 키보드 입력값을 선언
        Scanner sc1 = new Scanner(System.in);
        
        // 정수 a와 b에 키보드로 입력한 정수를 대입
        int a = sc1.nextInt();
        int b = sc1.nextInt();

        // 이중 for문 출력방식
        // : 바깥의 for문에 첫 번째 숫자가 대입돼서 돌기 시작 -> 안쪽의 for문이 끝까지 반복해서 돎 
        //   -> 바깥의 for문에 다음 숫자가 대입돼서 돌기 시작 -> 안쪽의 for문이 끝까지 반복해서 돎 -> ........
        // 따라서 세로줄에 해당하는 값을 바깥 for문에 대입하고, 가로줄에 해당하는 값을 안쪽 for문에 대입해야 함
        for (int n = 0; n < b; n++) {
            for (int m = 0; m < a; m++) {           
                // print되는 값을 줄바꿈 하지 않고 가로로 열거
                System.out.print("*");
            }
        // 안쪽 for문이 다 돌고 바깥쪽 for문으로 넘어갈 떄 줄바꿈을 시킴
        System.out.println();
        }
    }
}

그 외 정답👍️

    // 보통 가로를 먼저 생각하고, 그 다음에 세로를 생각하기 때문에 아래의 답이 더 직관적임
    public static void main(String[] args) {
        Scanner sc2 = new Scanner(System.in);
        int a = sc2.nextInt();
        int b = sc2.nextInt();
        
        // 문자의 형태로 변수 star를 선언
        String star = "";
        
        // i가 a의 값까지 1씩 늘어날 때마다 변수 star에 "*"를 하나씩 추가
        for (int i = 1; i <= a; i++) {
            star += "*";
        }
        
        // i가 b의 값까지 1씩 늘어날때마다
        for (int i = 1; i <= b; i++) {
        // 위 for문에서 생성된 star 값을 한 줄씩 출력
            System.out.println(star);
        }
    }
profile
Macro Developer

0개의 댓글