본문 바로가기
백준(Baekjoon)

[백준] 1284번: 집 주소 - 자바

by IT 정복가 2022. 4. 3.
728x90

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

 

1284번: 집 주소

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

www.acmicpc.net


[문제]


[코드]

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		while(true) {
			String N = sc.next();
			if(N.equals("0")) break;
			int E = 2;
			E += N.length()-1;
			
			for(int i = 0; i < N.length(); i++) {
				if(N.charAt(i) == '1')
					E += 2;
				else if (N.charAt(i) == '0')
					E += 4;
				else 
					E += 3;
			}
			System.out.println(E);
		}
		sc.close();
	}
}

[설명]

1. 0이 입력 될때까지 계속 반복되어야 하기때문에 while문으로 돌린다.

2. 호수판에 들어갈 숫자를 N으로 받는다 >> 숫자의 길이를 알아야 하기 때문에 String으로 받는 것을 명심해야 한다.

3. 0이 입력 되었을 시 종료를 하기 위해 if(N.equals("0"))문을 작성한다.

4. 숫자의 여백은 무조건 양 끝에 1cm씩 생기기 때문에 여백을 나타내는 E 변수에 2를 넣어준다.

5. 이젠 2를 넣은 E에 숫자 사이 여백을 더해주어야 한다. 만약 10이면 사이 여백은 1cm이고 100이면 사이 여백은 2cm이다. 이것을 통해 숫자 사이의 여백 = (숫자의 길이 - 1)cm인 것을 알 수 있다. 그렇기 때문에 E에 숫자의 길이 -1을 해준다.

6. for문을 N의 길이만큼 돌려 각 숫자마다의 너비를 알아내야한다.

7. 만약 숫자의 한 글자가 1이라면 E에 2를 넣고 0이라면 E에 4를 넣고 그렇지 않으면 3을 넣는 코드를 작성한다.

8. 그 후 for문을 나와 E를 출력하면 값이 나온다.

 

*N.charAt(i)는 String으로 저장된 문자열 중에서 한 글자만 선택해서 char타입으로 변환해주는 역할을 한다.  

 


[결과]

728x90