본문 바로가기
Algorithm/Programmers Java

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

by 제우제우 2024. 11. 19.

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

코딩테스트 연습 > 연습문제 > JadenCase 문자열 만들기

 

난이도: LEVEL2

알고리즘 유형: 구현(문자열)

풀이 설명

요구사항 

주어진 문자열 s는 숫자, 알파벳, 공백으로 이루어진 문자열이다.

길이는 최소 1에서 최대 200이다. 

문자열s를 JadenCase 문자열로 변환해서 반환해라 

 

JadenCase 문자열이란

시작 문자가 대문자 나머지 문자는 소문자 

JadenCase 문자열의 숫자는 딱 하나이고 맨 앞만 가능하다 

 

구현방법 

boolean flag 변수를 사용해서 현재 문자가 처음인지 아닌지 구별해서 동작하도록 해줬다.

StringBuilder에 정답을 기록 

만약 현재 문자가 공백문자면 flag 변수를 true로 바꾸고 공백문자를 StringBuilder에 넣어준다.

이때 true는 현재 문자가 JadenCase 문자열의 첫 문자라는 의미이다. (대문자)

공백문자가 아니라면 2가지 case이다. 

 

1. flag(true) JadenCase 문자열 첫 문자 O

현재 문자는 JadenCase 첫 문자이다. 그래서 String 메소드인 toUpperCase() 메소드를 통해서 대문자로 변환해서 StringBuilder에 추가한다. 

첫 문자였으니까 다음 공백문자를 만나거나 문자열의 끝까지 소문자를 넣어줘야 한다.

그래서 flag를 false로 바꿔서  JadenCase 문자열의 첫 문자가 아니라는 표시를 해준다. 

 

2. flag(false) JadenCase 문자열 첫 문자 X

첫 문자가 아니니까 String 메소드인 toLowerCase() 메소드를 통해서 소문자로 변환해서 StringBuilder에 추가한다.

 

정답 코드 

class Solution {
    public String solution(String s) { 
        StringBuilder sb = new StringBuilder();
        int size = s.length();
        boolean first = true;
        for(int i = 0; i < size; i++){
            char cur = s.charAt(i);
            // 이번 문자가 공백이라면?
            if(cur == ' '){
                sb.append(' ');
                first = true;
                continue;
            }
            // JadenCase 첫 문자 X
            if(!first){
                sb.append(Character.toString(cur).toLowerCase());
                continue;
            }
            // JandenCase 첫 문자 O
            sb.append(Character.toString(cur).toUpperCase());
            first = false;
        }
        return sb.toString();
    }
}