728x90
https://www.acmicpc.net/problem/1284
[문제]
[코드]
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
'백준(Baekjoon)' 카테고리의 다른 글
[백준] 2010번: 플러그 - 자바 (0) | 2022.04.10 |
---|---|
[백준] 1547번: 공 - 자바 (0) | 2022.04.04 |
[백준] 2446번: 별 찍기 - 9 -자바 (0) | 2022.04.02 |
[백준] 2445번: 별 찍기 - 8 - 자바 (0) | 2022.04.01 |
[백준] 1267번: 핸드폰 요금 - 자바 (0) | 2022.03.31 |