반응형
페이스북 기출 문제를 풀어 보겠습니다.
1. 문제
각 자리가 숫자(0 ~ 9) 로만 이루어진 문자열이 주어졌을 때 왼쪽부터 오른쪽으로 모든 숫자를 확인하여, 사이 사이의 '+', 'x' 연산 중 하나만 사용하여 가장 큰 수를 출력하는 문제 입니다. 다만, 'x' 곱하기 연산을 먼저 계산하는 방식이 아닌, 왼쪽부터 오른쪽으로 계산 하시오.
2. 접근
1. 0 또는 1 빼고 나머지 수들은 'x' 곱하기 연산시 값을 더 크게 만듭니다.
2. 따라서 0 또는 1일 경우만 '+' 연산, 나머지는 'x' 곱하기 연산을 해줍니다.
public class Page312 {
public static void main(String[] args) {
String value = "02984";
System.out.print(new Page312().solution(value));
}
public int solution(String value) {
// value의 첫번째 char를 int형으로 변환하기
int total = Integer.parseInt(String.valueOf(value.charAt(0)));
// 아래와 같은 방법으로도 char to int 변환 가능
// int total = value.charAt(0) - '0';
for (int i = 1; i < value.length(); i++) {
int digi = Integer.parseInt(String.valueOf(value.charAt(i)));
if (digi == 0 || digi == 1)
total += digi;
else if (total == 0 || total == 1)
total += digi;
else
total *= digi;
}
return total;
}
}
여기서 Integer.parseInt(String.valueOf(value.charAt(i))) 를 통해서 char 형을 int로 형변환 해주었는데, value.charAt(i) - '0' 으로도 char 에서 int로 형변환 할 수 있습니다.
반응형
'Algorithm' 카테고리의 다른 글
소수의 판별 (0) | 2020.09.23 |
---|---|
모험가 길드 (0) | 2020.09.22 |
공유기 설치 - 백준 2110번 (0) | 2020.09.22 |
파일 통계 프로그램 (0) | 2020.09.21 |
국영수 - '백준 10825번' (0) | 2020.09.18 |