[우아한테크 도전기] 이전 기수 프리코스 1주차_4번 연습

Dev_ch·2023년 9월 2일
0

우아한테크 도전기

목록 보기
26/51
post-thumbnail

해당 포스팅은 이전 기수 프리코스 1주차 4번 문제를 풀어보았다.

문제

이번 문제도 난이도는 높지 않았지만 어떻게 구현하냐가 핵심인 것 같다.

풀이

private static String solution(String word) {
        Map<Character, Character> map = englishConversionMap();

        StringBuilder sb = new StringBuilder();

        for (char c : word.toCharArray()) {
            boolean isUpperCase = Character.isUpperCase(c);
            if (c == ' ') {
                sb.append(c);
            } else if (isUpperCase) {
                sb.append(map.get(c));
            } else {
                Character upperCh = map.get(Character.toUpperCase(c));
                sb.append(Character.toLowerCase(upperCh));
            }
        }

        return sb.toString();
    }

    private static Map<Character, Character> englishConversionMap() {
        Map<Character, Character> map = new HashMap<>();

        for (char c = 'A'; c <= 'Z'; c++) {
            char mappedChar = (char) ('A' + 'Z' - c);
            map.put(c, mappedChar);
        }
        return map;
    }

잡담

이 문제는 풀이 방법이 다양할 것 같다는 느낌이 들었다. 필자는 Map에 미리 영어사전을 제작해놓고 Character에서 제공하고 있는 함수를 이용하여 대소문자를 구분후 변환 과정을 거치는 형식으로 구현하였다.

아쉬운점

역시 기능을 어떻게 분리해야 하는가? 가 핵심이였던 것 같다. 사전을 변환하는 작업은 기능을 분리하는 것이 좋고 간단하게 분리할 수 있었지만 StringBuilder를 이용해 대소문자를 구분해 새로운 단어를 만들어내는 과정이 어떻게 분리되어야 할지 난감했다.

이런 부분도 내가 발전해야 하는 부분이 아닐까 싶다 🥲

profile
내가 몰입하는 과정을 담은 곳

0개의 댓글