Algorithm/Programmers

프로그래머스[Level 1] - 직사각형 별 찍기 (java)

아이딕 2022. 9. 13. 09:05
728x90
반응형

- 문제 설명

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

 

- 제한 조건

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

- 나의 풀이

import java.util.Scanner;

public class coding_test_01 {
    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문을 이용해서 바깥 for문을 돌면서 println를 지나면서 *의 세로의 갯수 찍어주고, 안쪽 for문을 돌면서 print를  *의 가로 갯수를 찍어주는 코드로 문제의 설명과 같이 *로 직사각형을 찍어주는 코드로 문제룰 풀었다. 

 

 

-다른사람의 풀이

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

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

 

별찍기.. 자바를 처음 자바 반복문을 배울 때, 많이 해봤던 문제이다. 그래서 인지 머릿속에 문제의 풀이가 박혀있어서 고민 없이 코드를 풀고, 다른사람들의 풀이를 봤는데, 풀이가 다양했다. 그 중에서 스트림 람다식을 이용해서 풀이를 한 코드가 눈에 들어왔다. 자바 공부를 해보자는 목적으로 코딩테스트를 시작했는데, 역시.. 다른 사람의 코드를 보는게 공부가 많이 되는 것 같다. (성능적으로는 어떤지 잘 모르겠지만 ㅠ )

 

자바를 사용하면서 람다식을 써본적이 없었는데, 이번 기회에 람다식과 스트림을 알아보고 넘어가야겠다..

 

문제 출처 : https://programmers.co.kr/learn/challenges

728x90
반응형