티스토리 뷰

Solved.ac Class 완전정복 프로젝트

Class : 1 ~ 1 ++

 


링크

https://www.acmicpc.net/problem/2439

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

 

 

문제

첫째 줄에는 별 1, 둘째 줄에는 별 2, N번째 줄에는 별 N개를 찍는 문제

입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

 

접근방법

문제에서 요구하는 것은 단순하다. 출력 개수만큼 오른쪽 정렬을 하여 별 찍기를 하라는 것. 그 말은 별의 시작이 왼쪽부터라는 의미이며, 길이가 늘어날수록 시작점이 오른쪽으로 밀린다. 나는 공백에 집중해서 쉽게 풀었다.공백이 찍히는 갯수는 전체 줄 N의 길이보다 작은 N-(i+1) 개이다.  해당 인덱스를 확인하여 공백이 들어갈지 *들어갈지 판별하여 반복문을 이용하는 식으로 해답을 찾았다.

 

코드


import java.util.Scanner;

public class BJ_2439 {

    public static void main(String[] args) {
        BJ_2439 test = new BJ_2439();
    }

    public BJ_2439(){
        Scanner sc = new Scanner(System.in);
        StringBuilder sb =new StringBuilder();
        int cnt = sc.nextInt();

        String[] answer = solution(cnt);

        //string builder 를 통한 출력문
        for (int i = 0 ; i < answer.length ; i++){
            sb.append(answer[i]);
            sb.append("\n");
        }
        System.out.println(sb);
    }

    public String[] solution(int cnt){
        String[] answer = new String[cnt];
        String sen = "";



        for (int i = 0 ; i < answer.length ; i++){
            sen = "";
            //공백을 answer.length -(i+1) idx 만큼만 칠하고 나머지는 * 로 칠하여 오른쪽 정렬
            for (int j = 0 ; j < answer.length;j++){
                if( j < (answer.length - (i+1))){

                    sen +=" ";
                }else{
                    sen +="*";
                }


            }

            answer[i] = sen;
        }


        return answer;
    }

}

'공부 > 코딩 테스트 준비' 카테고리의 다른 글

[백준] 2577 - 숫자의 개수  (0) 2021.08.14
[백준]2562 - 최대값 JAVA  (0) 2021.08.14
[백준] 1546 - 평균 JAVA  (0) 2021.08.11
[백준] 2231 - 분해합 JAVA  (0) 2021.08.07
[백준] 2798 - 블랙잭 JAVA  (0) 2021.08.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함