인프런 커뮤니티 질문&답변

마비미님의 프로필 이미지
마비미

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. 특정 문자 뒤집기(toCharArray())

선생님 오답에 관해서 질문입니다!

작성

·

208

0

public static String solution(String str) {
        char[] originalWord = str.toCharArray();
        char[] reverseWord = new StringBuilder(str).reverse().toString().toCharArray();

        int length = originalWord.length;
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < length; i++) {
            if(Character.isAlphabetic(originalWord[i]))
                sb.append(reverseWord[i]);
            else if(!Character.isAlphabetic(originalWord[i]))
                sb.append(originalWord[i]);
        }
        return sb.toString();
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        String result = solution(str);
        System.out.println(result);
    }

입력받은 문자열을 char 배열로 뒀고

입력받은 문자열을 reverse 하여 char 배열을 하나 생성한 후

입력받은 문자열에 알파벳이 있으면 StringBuilder에 reverse 배열의 해당 인덱스를 가진 문자를 추가하고

없으면 특수문자라고 인식하여 본래의 입력값 배열에서 해당 인덱스를 가진 문자를 StringBuilder 에 추가하여 작성하였습니다.

처음엔 저런식으로 정규식으로 했는데 오답이 떠서  Character.isAlphabetic을 이용했는데도 오답이 뜹니다ㅜ 혹시 제가 놓친 부분이 있거나 메모리적으로 좋지 않은 방법이라서 오답인건지 궁금합니다..!

답변 2

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

이 방법은 반례가 너무 많습니다.

kj#$stpj 이 입력되면 jp#$tsjk 나와야 합니다.

위에 입력으로 본인 코드를 디버그 해보세요.

0

마비미님의 프로필 이미지
마비미
질문자

앗 이 경우를 생각못했네요ㅜ 감사합니다ㅎㅎ

마비미님의 프로필 이미지
마비미

작성한 질문수

질문하기