개발놀이터

1-5. 특정 문자 뒤집기 본문

기타/코딩테스트

1-5. 특정 문자 뒤집기

마늘냄새폴폴 2023. 2. 7. 15:59

package string.flipspecificcharacter15.my;

import java.util.Scanner;

public class Main {

    /**
     * 반은 맞추고 반은 못맞춘 문제... 정말 아쉽다...
     *
     * 키포인트
     * 1. '특수문자' 면 lt 는 ++ rt 는 -- 해야한다.
     * 2. if / else if / else 문으로 하나로 묶어야 한다.
     *
     * if (lt = 특수문자) {
     *     lt++;
     * }
     * else if (rt = 특수문자) {
     *     rt--;
     * }
     * else (둘다 알파벳인 경우) {
     *     둘이 바꿔
     * }
     *
     * 1번은 생각했는데 2번을 생각 못했다... 진짜 개바보보
    */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        String input = kb.next();

        System.out.println(solution(input));
    }

    private static String solution(String input) {
        String answer = "";
        int lt = 0, rt = input.length() - 1;

        char[] c = input.toCharArray();

        while (lt < rt) {
            if (!(c[lt] >= 65 && c[lt] <= 90) && !(c[lt] >= 97 && c[lt] <= 122)) {
                lt++;
            }
            else if (!(c[rt] >= 65 && c[rt] <= 90) && !(c[rt] >= 97 && c[rt] <= 122)) {
                rt--;
            }
            else {
                char tmp = c[lt];
                c[lt] = c[rt];
                c[rt] = tmp;

                lt++;
                rt--;
            }
        }

        answer = String.valueOf(c);

        return answer;
    }
}

 

전의 문제에서 활용했던 수동 뒤집기인 lt 와 rt 를 도입하여 정답에 근접하게 풀어냈으나 조건식을 합쳐야 한다는 느낌만 잡아내었고 else if 문을 생각하지 못했다... 정말 아쉬운 문제

 

정답에 정말 코앞까지 근접했으나 풀지 못해서 많이 아쉬움이 남는 문제

'기타 > 코딩테스트' 카테고리의 다른 글

1-7. 회문 문자열  (0) 2023.02.09
1-6. 중복된 문자 제거  (0) 2023.02.07
1-4. 단어 바꾸기  (0) 2023.02.07
1-3. 문장 속 단어찾기  (0) 2023.02.07
1-2. 대소문자 변환  (0) 2023.02.07