Java/Java 알고리즘

백준 1284번 집 주소 JAVA 구현해보기

kimc 2022. 5. 7. 20:36

```

백준 1284번 집 주소 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 1284번 풀이

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

 

1284번: 집 주소

재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다. 고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하

www.acmicpc.net

 

 

백준 1284번 집주소는

난이도 브론즈 등급의 문제로서

 

호수판(집주소 대문에 붙이는 판)을 만든다고 가정하고

 

좌우 1cm 여백

각 숫자 사이에 1cm 여백

1 은 2cm 여백

0 은 4cm 여백

나머지 수는 3cm 의 여백을 차지한다고 가정할때

 

각 수의 입력마다 총 여백을 출력해주고

0이 입력되면 종료 해주는 프로그램을 작성하면 됩니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


입력을 받고

정해진 조건에 맞춰서 

양옆에 여백값 총 2를 더하고

숫자여백 0인경우 4, 1이면 2, 그외에는 3 씩 더해주고

숫자사이에 여백을 총길이 뺴기 1 해서 더해준다음

출력해주면 되는

문제입니다.

 


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

public class Main {

    static final int LEFT_RIGHT_WHITESPACE = 2;
    static final int NUM_ZERO_WHITESPACE = 4;
    static final int NUM_ONE_WHITESPACE = 2;
    static final int NUM_NORMAL_WHITESPACE = 3;

    public static void main(String[] args) throws IOException {
        // BufferedReader Object 생성
        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        final StringBuilder sb = new StringBuilder();
        // 입력
        while (true) {
            int totalWhiteSpace = LEFT_RIGHT_WHITESPACE;
            char[] arr = br.readLine().toCharArray();
            if (arr[0] == '0' && arr.length == 1) {
                break;
            }
            totalWhiteSpace += findNumWhiteSpaces(arr);
            sb.append(totalWhiteSpace).append("\n");
        }
        sb.setLength(sb.length() - 1);
        // 출력
        System.out.print(sb);
        // 생성된 BufferedReader 반환
        br.close();
    }

    private static int findNumWhiteSpaces(char[] arr) {
        int retVal = arr.length - 1;
        for (char num : arr) {
            switch (num) {
                case '0': {
                    retVal += NUM_ZERO_WHITESPACE;
                    break;
                }
                case '1': {
                    retVal += NUM_ONE_WHITESPACE;
                    break;
                }
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9': {
                    retVal += NUM_NORMAL_WHITESPACE;
                    break;
                }
                default:
                    break;
            }
        }
        return retVal;
    }
}
//codemasterkimc.tistory.com [김씨의 코딩 스토리]

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90