본문 바로가기
Java/알고리즘

문자열사이에 '-' 삽입하자! (홀수사이에만!)

by 티코딩 2022. 11. 26.

문자열 입력받고 연속적으로 있는 홀수 사이에 '-' 삽입하자!

0은 짝수, String타입 입력받고 ex) "476793" ---> "4767-9-3" String타입 반환!

수도코드 작성해보자면

//for문, i는 1부터 charAt()사용해 한글자씩 순회
 // i, i-1 이 만약 홀수라면 사이에
 // "-"추가.

이를 토대로 작성해봤다.

public class Main {
    public static void main(String[] args) {
       String str = "33333";
       StringBuffer origin = new StringBuffer(str);
       for(int i = 1; i < str.length(); i++){
           if(Character.getNumericValue(str.charAt(i)) % 2 ==1 && Character.getNumericValue(str.charAt(i-1)) % 2 ==1){
              origin.insert(i,'-');
           }
        }
        System.out.println(origin);
    }

StringBuffer의 객체를 생성해 insert메서드를 처음 써 봤다. 무난하게 통과할줄알았더니..

결과는 "3----3333"이 나왔다.

origin이라는 객체를 만들고 if문에 str을 그대로 썼기 때문에 결과가 저렇게 나왔다. 바보.

String str = "333334";
        StringBuffer origin = new StringBuffer(str);
        for(int i = 1; i < origin.length(); i++){
           if(Character.getNumericValue(origin.charAt(i)) % 2 ==1 && Character.getNumericValue(origin.charAt(i-1)) % 2 ==1){
              origin.insert(i,'-');
           }
        }
        StringBuilder sb = new StringBuilder();

        sb.append("Hello .Welcome to Java.");
        sb.insert(5, "Jon");

        System.out.println(new String(sb));
        System.out.println(origin);
    }
}

결과는 3-3-3-3-34

인텔리제이 에서는 잘 돌아갔는데 코플릿에서는 오류가 났다.return 값이 StringBuffer 타입이었기 때문이었다. 문제에서 요구하는 것은 String 타입이었기 때문에  다시 StringBuffer을 String형식으로 바꿔주니 됐다. 그리고 빈문자열일 경우 null값 반환도 추가해줬다.

StringBuffer origin = new StringBuffer(str);
if(str.length() == 0) return null;
for(int i = 1; i < origin.length(); i++){
if(Character.getNumericValue(origin.charAt(i)) % 2 ==1 && Character.getNumericValue(origin.charAt(i-1)) % 2 ==1){
origin.insert(i,'-');
}
}
String s3 = origin.toString();
return s3;
}
}
끄읕