프로그래머스 12951
https://school.programmers.co.kr/learn/courses/30/lessons/12951
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;
}
}
'알고리즘' 카테고리의 다른 글
[leetcode] Two Sum (0) | 2022.10.13 |
---|---|
[프로그래머스] 이진 변환 반복하기 (0) | 2022.09.11 |
[프로그래머스] 숫자 문자열과 영단어 (0) | 2022.09.08 |
[백준] 나무 자르기 (0) | 2022.09.04 |
[프로그래머스] 징검다리 건너기 (0) | 2022.09.04 |