알고리즘

[프로그래머스] JadenCase 문자열 만들기

nayoon 2022. 9. 11. 15:17

프로그래머스 12951

 

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

 

프로그래머스

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

programmers.co.kr

String 메소드인 toLowerCase + 아스키코드 + StringBuilder를 사용해서 진행하였다.

toUpperCase 메소드 대신 아스키코드와 StringBuilder를 사용하였다.

 

주어진 문자열을 toLowerCase로 모두 소문자로 바꾼 후 맨 첫번째 문자(index = 0)이거나 직전 문자가 공백일 경우 대문자로 변경한다.

이때, 아스키코드가 96이상인지 체크한 후 32를 빼서 JadenCase 문자열을 만든다.

 

아스키 코드

일단 아스키 코드(ASCII Code)이다.

A - 65, a - 97 로 32만큼 차이가 난다.

0 ~ 9는 48 ~ 57이다.

 

StringBuilder

String은 immutable이고 StringBuilder은 mutable이다. 따라서 String을 StringBuilder으로 변환해서 문자를 변경할 수 있다.

 

정답 코드

import java.util.*;

/*
아스키코드 -> 대문자값 아래일 경우 
*/
class Solution {
    public String solution(String s) {
        String answer = "";
        s = s.toLowerCase();
        
        StringBuilder sb = new StringBuilder();
        int index = 0; 
        for(int i = 0, size = s.length(); i < size; i++) {
            char ch = s.charAt(i);
            sb.append(ch);
            if (ch == ' ') continue;
            if (i == 0 || (i > 0 && sb.charAt(i - 1) == ' ')) {
                if (ch > 96)
                    sb.setCharAt(i, lowerToUpper(ch));
            }
        }
        
        return sb.toString();
    }
    
    public static char lowerToUpper(char ch) {
        ch = (char)(ch - 32);
        return ch;
    }
    
    public static char upperToLower(char ch) {
        ch = (char)(ch + 32);
        return ch;
    }
}