💡 코테/99클럽

[ 99클럽 코테 스터디 17일차 TIL ] 프로그래머스(JadenCase 문자열 만들기)

MNY 2024. 4. 14. 23:13
728x90
반응형
💡 오늘의 학습 키워드

- 프로그래머스
    * JadenCase 문자열 만들기 : 미들러 문제(Level 2)

 

오늘의 회고

문제1  : [JadenCase 문자열 만들기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

문자열을 입력받아 단어의 첫 글자는 대문자 나머지는 소문자로 만드는 문제였다.

공백은 한 번에 여러 번 입력가능하고, 숫자는 변환하지 않아야 한다.

 

오늘은 미들러 문제치고는 너무 쉬웠다. 전에 비슷한 문제를 풀이해봐서 그런가..?

일단 문자열의 첫 글자가 소문자일 경우 대문자로 변경해주고 아닐 경우는 그대로 넣어준다.

그리고 문자열의 두 번째 글자부터 문자열의 끝까지 반복문을 돌면서 아래와 같은 조건대로 변경해서 넣어준다.

  • 해당 인덱스 앞이 공백일 경우 + 소문자일 경우는 대문자로 변경
  • 해당 인덱스 앞이 공백이 아닐 경우 + 대문자일 경우는 소문자로 변경
  • 나머지는 그대로 

그러면 문제 해결!

 

아.. 그런데 첫 번째 시도에서는 'a' > str > 'z' 이런식?으로 해서

b부터 y까지만 소문자로 인식해서 첫 제출에 실수가 있었다. 물론 대문자도 비슷하게 실수했다....

 

 

프로그래머스

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

programmers.co.kr

 

  • 어떻게 해결했는지
class Solution {
    public String solution(String s) {
        int len = s.length();
        StringBuilder sb = new StringBuilder();
    
        if(s.charAt(0) >= 'a' && s.charAt(0) <= 'z')
            sb.append((char)(s.charAt(0) - 'a' + 'A'));
        else
            sb.append(s.charAt(0));
        
        for (int i = 1; i<len; i++) {
            if (s.charAt(i-1) == ' ' && s.charAt(i) >= 'a' && s.charAt(i) <= 'z')
                sb.append((char)(s.charAt(i) - 'a' + 'A')); // 단어의 첫 영어글자 대문자로..
            else if (s.charAt(i-1) != ' ' && s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')
                sb.append((char)(s.charAt(i) - 'A' + 'a')); // 단어의 뒷 영어글자 소문자로..
            else
                sb.append(s.charAt(i)); // 나머지는 그대로..
        }
        String answer = sb.toString();
        
        return answer;
    }
}

 

  • 무엇을 새롭게 알았는지

오늘은 문제가 생각보다 쉬웠다. 코드를 다 타이핑해서 걸린 시간만 들었기에 블로그 작성이 더 걸리는 것 같다.

다른 사람들의 풀이를 보면서 삼항 연산자를 사용하거나 대소문자 변경 함수를 사용하시는 분이 많았다.

다음 번에는 삼항 연산자를 사용하거나 대소문자 변경 함수에 대해 정리 좀 해볼까 한다.

 

내일 학습할 것은 무엇인지 (최대 3개)

  • 정보처리기사 실기
  • 자바 형변환 정리
  • 클럽99 코딩테스트(미들러)
728x90
반응형