[프로그래머스 / JAVA] Level 1 직사각형 별찍기 (12954)
⏰ 2021-12-19 (일) 16:18:31
직사각형 별찍기
랭크 | 사용 언어 |
---|---|
Level 1 |
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n
과 m
이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n
, 세로의 길이가 m
인 직사각형 형태를 출력해보세요.
제한 조건
n
과m
은 각각 1000 이하인 자연수입니다.
예시
입력
TXT
1
5 3
출력
TXT
1 2 3
***** ***** *****
풀이
이 번엔 특이하게 Scanner
객체를 통해 사용자의 입력을 직접 받는 방식이다. 직접 n
, m
을 받아 해당 크기만큼 별표(*)로 사각형을 찍어 출력한다. 학부 시절 처음 C언어를 배웠을 때가 생각나던 문제.
필자는 개인적으로 Scanner
보다 BufferedReader
를 사용하여 사용자 입력을 받는 것을 더 선호한다. 이유는 BufferedReader
의 성능이 더 뛰어나기 때문.
어차피 미묘한 성능차가 알고리즘의 수행 여부를 판단하지 않으므로, 그냥 원하는 걸로 사용해도 무방하다.
n
, m
을 입력하여 n
개의 별을 m
줄 만큼 표시하자. repeat()
메서드를 활용하여 특정 문자열을 원하는 만큼 반복해 이중포문 없이 구성할 수 있다.
코드
JAVA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; /** * 직사각형 별찍기 클래스 * * @author RWB * @since 2021.12.13 Mon 22:27:04 */ class Solution { /** * 메인 메서드 * * @param args: [String[]] 파라미터 */ public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int[] inputs = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); for (int i = 0; i < inputs[1]; i++) { System.out.println("*".repeat(inputs[0])); } reader.close(); } }
🏷️ 태그
# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1
읽어주셔서 고마워요!
도움이 되셨다면, 공감이나 댓글을 달아주시는 건 어떤가요?
블로그 운영에 큰 힘이 됩니다.