알고리즘/프로그래머스

[프로그래머스] Lv.0 - 직각삼각형 출력하기

으노로 2023. 3. 2. 04:41

안녕하세요.

오늘은 프로그래머스의 코딩테스트 lv.0 단계 중에 직각삼각형 출력하기를 공부해보겠습니다.

언어는 Java로 구현하였습니다.

 

문제 설명

"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고 합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.

 

제한 사항

1 ≤ n ≤ 10

 

입출력 예

입력 출력
3 *
**
***

문제 풀이

입력된 숫자 n만큼의 높이와 크기인 직각삼각형을 출력하기 위해 이중 반복문을 이용하여 "*"을 출력하도록 구현하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        height : for(int i = 0; i < n; i++)
        {
            width : for(int j = 0; j <= i; j++)
            {
                System.out.print("*");
            }
            
            System.out.print();
        }
    }
}

첫 번째 반복문인 height는 0부터 입력된 숫자 n만큼 반복하여 높이를 출력하였습니다.

두 번째 반복문인 width는 0부터 반복문 height의 i만큼 반복하여 너비를 출력하였습니다.

 

추가 풀이

위의 방식은 정답이지만 다른 분들의 풀이 중에 반복문을 이중으로 사용하지 않고 구현한 방법이 있어서 공부해보려고 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Scanner;
 
public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        for(int i = 1; i <= n; i++)
        {
            System.out.println("*".repeat(i));
        }
    }
}

자바의 String 메소드 중에 repeat() 함수를 n만큼 반복해서 사용하여 "*"을 출력하였습니다.


사용 함수

  • repeat()
    • 문자열을 입력된 숫자만큼 반복합니다.
    • 자바 11에서 추가된 메소드이므로 11 버전 이상의 버전에서 사용 가능합니다.

 

마무리 정리

반복문만 사용하여 구현하기 위해서는 이중으로 사용해야 했지만 repeat() 함수를 사용하면 한 번의 반복문으로 구현이 가능했습니다.

repeat() 함수를 사용해보려고 했지만 에러가 발생하여 찾아보니 사용하고 있는 자바의 버전이 11보다 낮은 버전이라서 발생한 에러였습니다. 자바의 버전에 따라 사용 가능한 함수가 다르다는 것을 배울 수 있었습니다.

이상으로 프로그래머스 Lv.0 - 직각삼각형 출력하기 공부를 마치겠습니다.

감사합니다.