오늘의 코딩 테스트

오늘의 코딩 테스트 (직사각형 별찍기)

oceanflow 2025. 3. 4. 09:59

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.

별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

 

제한 조건

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

 

 

 

내가 푼 풀이

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();
        }
    }
}

 

for문을 이용 print를 사용해 개행을 하지 않고 *을 a만큼 옆으로 출력하고 b만큼 개행을 해주었다.

 

 

 

StringBuilder와 IntStream을 활용한 풀이

import java.util.Scanner;
import java.util.stream.IntStream;

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();
        IntStream.range(0, a).forEach(s -> sb.append("*"));
        IntStream.range(0, b).forEach(s -> System.out.println(sb.toString()));
    }
}

 

StringBuilder 객체를 생성하여 별표 문자열을 효율적으로 구성하고 

  • 첫 번째 IntStream.range(0, a)는 0부터 a-1까지의 정수 스트림을 생성하여 별표 문자열을 만든다.
  • 두 번째 IntStream.range(0, b)는 0부터 b-1까지의 정수 스트림을 생성하여 별표 문자열을 b번 출력한다.