insertDash

이용만·2023년 3월 21일
0

문제
문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다.

입출력 예시
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이 안나왔다.

profile
성장하는 개발자가 되고자 합니다.

0개의 댓글