문제
문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다.
입출력 예시
String output = insertDash("454793");
System.out.println(output); // --> 4547-9-3
public class Solution {
public String insertDash(String str) {
// 핵심 : 홀수 숫자가 연속하다면 그 사이에 '-' 삽입한다.
if(str.length() == 0) return null;
//결과를 저장할 result 변수를 선언, 빈 값과 첫 문자를 할당한다.
String answer = "" + str.charAt(0);
//반복문 str.length 만큼 돌린다. i = 1 부터 시작 왜? 앞 인덱스와 비교해야하니까.
for(int i = 1; i<str.length(); i++){
//앞선 문자열과 이후 문자열을 비교할 변수를 선언후, 해당 값을 int로 변환합니다.
int prev = Character.getNumericValue(str.charAt(i-1)) % 2;
int cur = Character.getNumericValue(str.charAt(i)) % 2;
//두 문자열이 모두 홀수라면 결과에 이전값과 "-"를 함께 저장합니다.
if(prev != 0 && cur != 0) answer = answer + "-";
//그렇지 않으면 answer에 charAt(순서)를 할당한다.
answer = answer + str.charAt(i);
}
return answer;
}
}
아쉬운 것은 어떤 메서드를 써야할지 바로 나왔는데 int i = 0 부터 시작해서 첫문자와 그 뒤문자를 비교하다보니까 IndexOutBoundException이 계속해서 발생했다. 계속 고민해도 1이 안나왔다.