본문 바로가기
Language/Java

[Programmers | Java | 연습문제 풀이] 직사각형 별찍기 - Solution with Loop 또는 repeat() 또는 StringBuilder

by ㅇ달빛천사ㅇ 2024. 7. 3.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기  |  Algorithm CODEKATA

직사각형 별찍기

 

🏷 관련 주제 : Scanner String StringBuilder


 


✔️ Solution with Loop

import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
채점 결과

✔️ Solution with repeat()

import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        
        System.out.print(String.format("%s\n","*".repeat(n)).repeat(m));
    }
}

✔️ Solution with StringBuilder

import java.util.Scanner;
import java.lang.StringBuilder;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        StringBuilder sb = new StringBuilder();
        
        sb.append("*".repeat(n * m));
        
        for (int i = 1; i < m; i++) {
            sb.insert(i * (n + 1) - 1, "\n");
        }
        
        System.out.print(sb.toString());
    }
}

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

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


정말 오랜만에 Scanner클래스를 사용해 보았다.

그런데 제출한 코드들의 실행 시간이  다 150ms 정도 나와서

더 빠른 코드가 없을까?

고민하며 이중for문도 써보고

repeat()메서드도 써보고

StringBuilder도 써 보았는데

더 빠른 코드를 찾지 못했다.

 

💬 무엇을 새롭게 알았는지

Scanner 객체를 사용해 보았다.

String Builder 객체를 사용해 보았다.


📚 References(참고 자료)

 

 

 

728x90


Top