본문 바로가기
개발/개발 공부

[프로그래머스] 코딩테스트 입문 : 직각삼각형 출력하기 (별찍기)

by 하모예 2024. 9. 3.

| 문제

"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용하여 직각 이등변 삼각형을 그리려고 합니다.

정수 n이 주어지면 높이와 너비가 n인 직각 이등변 삼각형을 출력하도록 코드를 작성해 보세요.

| 제한 사항

  • 1 ≤ n ≤ 10

| 입출력 예

입력 #1

3

출력 #1

*
**
***

| 풀이 1

import java.util.Scanner;
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    for(int i = 1 ; i <= n ; i++){
        for(int j = 1 ; j <= i ;j++){
            System.out.print("*"); 
        }
        System.out.println("");
    }
}

| 풀이 2

import java.util.Scanner;
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)); 
    }
}

| 해설

프로그래머스가 코딩테스트 입문에서 제공한 첫 번째 Scanner 문제입니다.

Java는 백엔드 언어이기 때문에 연산을 수행할 뿐 우리 눈에 결과를 보여주지는 않습니다.

그런데 우리는 사람이기 때문에 눈으로 확인하지 않으면

우리가 의도한 대로 코드가 잘 동작하고 있는지 확인할 길이 없지요.

그래서 Java와 상호작용할 수 있는 여러 가지 기능이 준비되어 있습니다.

 

대표적인 것이 Scanner(스캐너)입니다. 

스캐너는 사용자가 키보드로 입력한 값을 받아올 수 있게 해 줍니다. 

그리고 개발자인 우리는 스캐너 덕분에 사용자가 어떤 값을 입력하든

정상적으로 코드가 동작할 수 있도록 다양한 가능성을 고려하면서 개발할 수 있습니다.

 

프로그래머스는 이 문제를 직각삼각형 출력하기라고 불렀지만,

아주 조금이나마 알고리즘에 대해서 공부해 본 분들은 들어보셨을 거예요.

"*"와 반복문을 활용하여 특정한 모양을 출력하는 문제를 "별 찍기"라고도 부릅니다.

특수기호 *(아스트리크)의 모양이 별처럼 생겨서 그렇게 부른다고 하죠.

이 문제에서는 출력되는 행의 개수와 열의 개수가 같도록 출력하는 문제이고

반대로 출력하는 방법, 크리스마스트리 만들기 등 다양한 별 찍기 문제가 있습니다.

 

별찍기 문제를 처음 만나면 많이 당황스럽다고 하더라고요.

별 찍기 문제를 만나면 일단 원하는 모양대로 출력하는 출력문을 작성해 보세요.

그리고 코드 속에서 규칙을 찾아봅니다. 

표준출력이 3번 반복되고, 그 안에 있는 별이 하나씩 커진다는 사실을 발견할 수 있을 거예요.

System.out.println("*");
System.out.println("**");
System.out.println("***");

댓글