몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 1] 이상한 문자 만들기 {언어 : Java} 본문

개발 언어 입문/Java 입문

프로그래머스 [Lv. 1] 이상한 문자 만들기 {언어 : Java}

스위태니 2024. 6. 18. 20:21

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

정답 코드

class Solution {
    public String solution(String s) {
        int lenS = s.length();
        StringBuilder sb = new StringBuilder();
        boolean isOdd = true;
        for (int i = 0; i < lenS; i++) {
            // current character
            char cc = s.charAt(i);
            // transformed character
            String tc = "";
            if (cc == ' ') {
                isOdd = true;
                sb.append(" ");
                continue;
            }
            if (isOdd) {
                cc = Character.toUpperCase(cc);
            } else {
                cc = Character.toLowerCase(cc);
            }
            isOdd = !isOdd;
            tc = String.valueOf(cc);
            sb.append(tc);
        }
        String answer = sb.toString();
        return answer;
    }
}

풀이 방법

  1. StringBuilder를 만든다.
  2. ' ' 빈 칸 일 때 isOdd를 초기화 한다.
    1. 공백을 기준으로 단어의 첫 번째를 홀수 번째로 인식해야 하기 때문
  3. isOdd에 따라 대문자 또는 소문자로 바꾼 뒤 sb에 append해준다.
  4. 마지막으로 sb를 String으로 변환하면 끝!

느낀점

  • 어떻게 풀어야 할지는 아는데 아직 대소문자 바꾸는 것은 어려우며, 자바 뿐만아니라 파이썬, 자바스크립트 다 대소문자 변환함수를 까먹은 것 같다.
  • 추가로 아스키코드 변환도 자주 까먹는 함수중 하나이므로 다음에 정리를 해야 할 것 같다.