[문제 링크] 👉 https://www.acmicpc.net/problem/1284
설명
- 각 숫자 사이에는 1cm의 여백이 들어가야한다.
- 1은 2cm의 너비를 차지해야한다. 0은 4cm의 너비를 차지해야한다. 나머지 숫자는 모두 3cm의 너비를 차지한다.
- 호수판의 경계와 숫자 사이에는 1cm의 여백이 들어가야한다.
여백을 포함한 호수판의 총 너비를 구해야 한다.
풀이
- 문자열로 숫자를 입력받는다.
- split() 메서드를 사용해 문자열을 분리하여 배열에 저장한다.
- 반복문으로 배열에서 하나씩 꺼낸다.
- 각 문자를 정수형으로 변환하고 각 조건에 맞게 계산한다
- 공백을 포함시켜야 하므로 숫자 너비에 각 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 말고도 많다.
위 코드에서는 정수형으로 변환한 후에 조건을 따졌는데, 정수형으로 변환하지 않고 그대로 문자로 조건을 확인하는 방법도 있다.
'BOJ 코딩테스트 > Bronze' 카테고리의 다른 글
BOJ 10810 : 공 넣기 (Java/구현/Bronze 3) (2) | 2024.10.12 |
---|---|
BOJ 1598 : 꼬리를 무는 숫자 나열 (Java/수학/Bronze 3) (0) | 2024.10.12 |
BOJ 1267 : 핸드폰 요금 (Java/구현/Bronze 3) (2) | 2024.10.12 |
BOJ 9295 : 주사위 (Java/구현/Bronze 4) (0) | 2024.10.10 |
BOJ 5596 : 시험문제 (Java/구현/Bronze 4) (0) | 2024.10.10 |