𝝅번째 알파카의 개발 낙서장

screen

[프로그래머스 / JAVA] Level 1 직사각형 별찍기 (12954)

posts

알고리즘

시리즈 톺아보기

프로그래머스

프로그래머스
count

직사각형 별찍기 🔗

랭크 사용 언어
Level 1 JAVA

🔗 직사각형 별찍기

문제 설명 🔗

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

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

제한 조건 🔗

  • nm은 각각 1000 이하인 자연수입니다.

예시 🔗

입력 🔗

TXT

05 3

출력 🔗

TXT

0*****
1*****
2*****

풀이 🔗

이 번엔 특이하게 Scanner 객체를 통해 사용자의 입력을 직접 받는 방식이다. 직접 n, m을 받아 해당 크기만큼 별표(*)로 사각형을 찍어 출력한다. 학부 시절 처음 C언어를 배웠을 때가 생각나던 문제.

필자는 개인적으로 Scanner보다 BufferedReader를 사용하여 사용자 입력을 받는 것을 더 선호한다. 이유는 BufferedReader의 성능이 더 뛰어나기 때문.

어차피 미묘한 성능차가 알고리즘의 수행 여부를 판단하지 않으므로, 그냥 원하는 걸로 사용해도 무방하다.


n, m을 입력하여 n개의 별을 m줄 만큼 표시하자. repeat() 메서드를 활용하여 특정 문자열을 원하는 만큼 반복해 이중포문 없이 구성할 수 있다.

코드 🔗

JAVA

0import java.io.BufferedReader;
1import java.io.IOException;
2import java.io.InputStreamReader;
3import java.util.Arrays;
4
5/**
6 * 직사각형 별찍기 클래스
7 *
8 * @author RWB
9 * @since 2021.12.13 Mon 22:27:04
10 */
11class Solution
12{
13 /**
14 * 메인 메서드
15 *
16 * @param args: [String[]] 파라미터
17 */
18 public static void main(String[] args) throws IOException
19 {
20 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
21
22 int[] inputs = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
23
24 for (int i = 0; i < inputs[1]; i++)
25 {
26 System.out.println("*".repeat(inputs[0]));
27 }
28
29 reader.close();
30 }
31}