[프로그래머스 / JAVA] Level 1 직사각형 별찍기 (12954)
게시글
⏰ 2021-12-19 07:18:31
D O W N
D O W N
랭크 | 사용 언어 |
---|---|
Level 1 |
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
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(); } }
🏷️ Related Tag