직각삼각형 출력하기 [CT]

성배·2025년 1월 9일
1

코딩테스트

목록 보기
10/53

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

생각한 풀이
1. 이중 for문으로 별이랑 높이를 구분하자
2. 변수 int tc를 만들어 높이를 따로 구분
3. StringBuilder로 별을 찍고 줄바꿈도 한번에 append해서 출력하자


import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        StringBuilder tr = new StringBuilder();

        for(int i=0;i<n;i++){
            for(int j=0;j<=i;j++){
                tr.append("*");
            }    
            tr.append("\n");
        }
        System.out.println(tr);
    }
}

🐴 풀이
1. StringBuilder tr 생성
2. 첫번째 for문은 삼각형의 높이
3. 두번째 for문은 별의 수를 찍는 for문인데 이때 int tc를 만들어 내부 for문이 끝날때 마다 tc++를 하려했는데 tc가 i와 동일해 i로 변경
4. 두번째 for문이 끝나면 줄바꿈 추가

 

원래는 Scanner 보다 BufferedReader를 사용하느데 이번 문제에서는 Scanner가 이미 작성되어 있어 Scanner로 사용


BufferedReader

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bf.readLine())
        StringBuilder tr = new StringBuilder();

        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= i; j++) {
                tr.append("*");
            }
            tr.append("\n");
        }
        System.out.print(tr);
    }
}

🐴 풀이
1. BufferedReader를 사용할 때 IOException이 발생할 수 있으므로 throws IOException을 추가
2. bf.readLine()은 문자열을 입력 받아 int 받을때 Integer.parseInt로 형변환 필요
3. 내부 로직은 동일

0개의 댓글