[JAVA] 프로그래머스 JadenCase 문자열 만들기
2022. 10. 22.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=java 

 

프로그래머스

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

programmers.co.kr

 

1. 서론

 

자바로 문자열 문제를 풀어보기 위해 풀었던 문제. 자바는 진짜 문자열 다루기 어렵구나,,, 문자열 문제는 그냥 C++로 도망칠까 싶어지는 문제다 ㅜ

 

2. 문제 풀이

 

문제에서의 조건

 

모든 단어는 첫 문자가 대문자여야 함. 

(예외. 단 첫 문자가 숫자인 경우를 제외함)

 

문자는 공백 문자(' ')를 기준으로 구분.

 

주어진 문자열을 이 조건에 맞게 고쳐서 return 하는 게 문제이다.

 

내가 착각했던 포인트: 첫 글자가 숫자인건 맨 앞뿐.이라고 생각해서 그렇게 코드를 짰는데 테케 17번 말고는 다 맞았다. 17번이 틀린다면 이 케이스...

 

로직:

1. 문자열을 전부 소문자로 만듬

2. 문자열의 맨 앞 단어는 공백 문자로 구분할 수 없기 때문에 숫자인가 아닌가 판별 후 아니면 대문자로 처리

3. 반복문 돌면서 공백 문자의 다음 문자가 숫자가 아닌 문자인 경우에만 대문자로 바꿈

 

3. 코드 설명

 

class Solution {
    public String solution(String s) {
        s = s.toLowerCase();
        char[] c = s.toCharArray();
        
        if (!Character.isDigit(c[0]))
            c[0] -= ('a' - 'A');

        for (int i = 1; i < s.length() - 1; i++) {
            if (c[i] == ' ' && c[i + 1] != ' ' && !Character.isDigit(c[i + 1]))
                c[i + 1] -= ('a' - 'A');
        }
        
        return new String(c); 
    }
}

 

toLowerCase()는 String의 모든 문자를 소문자로 바꾸는 함수이다.

toCharArray()는 String을 문자형 배열인 Char[]로 치환해주는 함수이다.

Character 클래스의 함수인 isDisit은 char형 문자가 숫자인지 아닌지 판별해주는 boolean형의 함수이다.

그리고 Char[] 배열을 다시 String으로 바꾸기 위해 String 객체를 새로 만들어서 그 안에 Char[]를 넣어줬다.

 

쉽지 않다 진짜 ㅎ

 

 

반응형
myoskin