Stay Hungry Stay Foolish

BOJ 코딩테스트/Bronze

BOJ 1284 : 집 주소 (Java/구현/Bronze 3)

dev스카이 2024. 10. 12. 00:39

[문제 링크] 👉 https://www.acmicpc.net/problem/1284


설명

  1. 각 숫자 사이에는 1cm의 여백이 들어가야한다.
  2. 1은 2cm의 너비를 차지해야한다. 0은 4cm의 너비를 차지해야한다. 나머지 숫자는 모두 3cm의 너비를 차지한다.
  3. 호수판의 경계와 숫자 사이에는 1cm의 여백이 들어가야한다.

여백을 포함한 호수판의 총 너비를 구해야 한다.

 

풀이

  1. 문자열로 숫자를 입력받는다.
  2. split() 메서드를 사용해 문자열을 분리하여 배열에 저장한다.
  3. 반복문으로 배열에서 하나씩 꺼낸다.
    • 각 문자를 정수형으로 변환하고 각 조건에 맞게 계산한다
    • 공백을 포함시켜야 하므로 숫자 너비에 각 1씩 더해야 한다.

 

split() 메서드

String[] nums = num.split("");

 

분리한 것을 배열에 저장해야 한다. 인자로 무슨 기준으로 분리할 것인지를 넘긴다. 

 

 

Integer.parseInt()

int intNum = Integer.parseInt(s);

 

문자열을 정수형으로 변환하는 메서드이다. 인자로 변환할 문자나 문자열을 넘겨주면 된다.

 

 

Solution

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //0을 입력할 때까지 반복
        while (true) {
            String num = br.readLine();
            if (num.equals("0")) {
                break;
            }
            int width = 1; //첫 번째 여백 1
            //숫자 분리하기
            String[] nums = num.split("");
            for (String s : nums) { //다음 여백 포함해서 + 1씩 더하기
                int intNum = Integer.parseInt(s);
                if (intNum == 1) {
                    width += 3;
                } else if (intNum == 0) {
                    width += 5;
                } else {
                    width += 4;
                }
            }
            System.out.println(width);
        }
    }
}

 

 

👩‍💻 회고

분리하는 방법은 split 말고도 많다.

위 코드에서는 정수형으로 변환한 후에 조건을 따졌는데, 정수형으로 변환하지 않고 그대로 문자로 조건을 확인하는 방법도 있다.