문자열 입력받고 연속적으로 있는 홀수 사이에 '-' 삽입하자!
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;
}
}
끄읕
'Java > 알고리즘' 카테고리의 다른 글
정수배열 각 요소가 앞에 요소들의 합보다 크면 레알참트루 (0) | 2022.12.06 |
---|---|
문자열배열 세로로 읽어버리기 (0) | 2022.12.05 |
문자열중 특정문자로 시작해 특정문자로 끝나는지 찾아용 (1) | 2022.11.25 |
2차원배열을 HashMap으로 / [구현]보드게임 (0) | 2022.11.25 |
안반잘다만 - String 슬라이싱 후 앞글자만 모으기 (0) | 2022.11.22 |