[문제풀이] 01-05. 특정 문자 뒤집기

𝒄𝒉𝒂𝒏𝒎𝒊𝒏·2023년 10월 24일
0

인프런, 자바(Java) 알고리즘 문제풀이

String(문자열) 다루기 - 0105. 특정 문자 뒤집기


🗒️ 문제


🎈 나의 풀이

	public static String solution(char[] arr) {
        String answer = "";
        for(int i=0; i<arr.length; i++) {
            char c = arr[i];
            if(Character.isAlphabetic(c)) {
                answer += arr[arr.length - i - 1];
            } else {
                answer += c;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] str = sc.nextLine().toCharArray();
        System.out.println(solution(str));
    }


🖍️ 강의 풀이

    public static String solution(char[] arr) {
        int lt = 0, rt = arr.length - 1;
        while(lt < rt) {
            if(!Character.isAlphabetic(arr[lt])) lt++;
            else if(!Character.isAlphabetic(arr[rt])) rt--;
            else {
                char temp = arr[rt];
                arr[rt] = arr[lt];
                arr[lt] = temp;
                lt++;
                rt--;
            }
        }

        return String.valueOf(arr);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] str = sc.nextLine().toCharArray();
        System.out.println(solution(str));
    }


💬 짚어가기

나의 풀이는 Character 클래스의 isAlphabetic() 메소드를 이용해
알파벳 여부를 판별 후 알파벳이 아닌 경우에는 그대로 저장, 알파벳인 경우는
문자열의 중심을 기준으로 대칭 위치에 존재하는 문자를 저장하도록 구현했다.

테스트 케이스는 통과하였지만 제출 결과는 오답 처리되었다. 반드시 문자열의
구조가 대칭인 것은 아닌 것 같다.

강의에서는 배열의 양쪽 끝을 각각 가르키며, ltrt가 모두 문자를 가르키는 경우
서로 내용을 바꾸도록 구현되었다.

profile
𝑶𝒏𝒆 𝒅𝒂𝒚 𝒐𝒓 𝒅𝒂𝒚 𝒐𝒏𝒆.

0개의 댓글