250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 프래그먼트
- 막내의 막무가내
- 막내의막무가내 안드로이드 코틀린
- 주엽역 생활맥주
- 막내의막무가내 SQL
- 안드로이드 Sunflower 스터디
- 막내의막무가내
- 막내의막무가내 일상
- 막내의막무가내 플러터 flutter
- 프로그래머스 알고리즘
- 안드로이드
- 부스트코스
- 막내의막무가내 rxjava
- flutter network call
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 안드로이드
- Fragment
- 막내의막무가내 프로그래밍
- 막내의막무가내 플러터
- 안드로이드 sunflower
- 막내의막무가내 알고리즘
- 막내의막무가내 코틀린 안드로이드
- 막내의 막무가내 알고리즘
- 부스트코스에이스
- 2022년 6월 일상
- 막무가내
- 주택가 잠실새내
- 막내의막무가내 목표 및 회고
- 막내의막무가내 코틀린
- 막내의막무가내 안드로이드 에러 해결
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[알고리즘] 프로그래머스 JadenCase 문자열 만들기 -연습문제- 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/12951
프로그래머스 레벨2에 있는 문제이고 분류는 안되어있지만 문자열을 조작하는 문제입니다.
처음에 쉽게 풀릴 거 같았는데 예외사항과 실수가 조금 있었습니다. (문제가 좀 빈약한 것 같아요)
예를들어 (제가 잘못이해한거 포함해서)
1. 공백이 연속으로 올 수도 있고 공백다음의 공백은 첫 문자로 치지 않는다. 즉 공백은 문자가 아니라고 생각하면 됩니다.
2. 처음 풀때 저는 제한 조건쪽만 보고 첫 문자가 영문이 아닌 경우만 이어지는 영문은 소문자로 쓰는줄 알고 그렇게 풀었는데 그냥 첫문자 뺴고는 다 소문자 와야한다고 문제 설명에 적혀있습니다. ㅠ 맨날 문제 잘못읽네요 언제 고쳐질련지 허허.
Character 의 기능을 사용하면 쉽게 풀리는 문제였습니다. 아스키코드 사용해서 알파벳 변환하고 알파벳인지 확인하는 것을 안한지가 오래되어서(소문자에 32빼면 대문자된다만 기억나네요. 65, 97이랑) 저는 Character 클래스의 함수를 사용해서 풀었습니다.
그리고 주의해야할 점이 Char 형 빈 문자 즉 ' ' 는 equals(" ") 로 비교하면 안되고 꼭 equals(' ') 로 해줘야합니다.
풀이는 다음과 같습니다.
class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
solution.solution("3people DnFollowed sa23da me 444ASSDD");
}
public String solution(String s) {
int i = 0;
boolean isNewWord = true;
StringBuilder answer = new StringBuilder(s);
while (i < s.length()) {
Character ch = s.charAt(i);
if (isNewWord && !(ch.equals(' '))) {
if (Character.isLowerCase(ch)) {
answer.replace(i, i + 1, ch.toString().toUpperCase());
isNewWord = false;
i++;
continue;
}else if(Character.isUpperCase(ch)){
isNewWord = false;
i++;
continue;
}
isNewWord = false;
} else if (ch.equals(' ')) {
isNewWord = true;
}
if (Character.isUpperCase(ch) && !isNewWord) {
answer.replace(i, i + 1, ch.toString().toLowerCase());
}
i++;
}
return answer.toString();
}
}
댓글과 공감은 큰 힘이 됩니다. 감사합니다!!
728x90
'알고리즘 > 문자열, 정렬' 카테고리의 다른 글
[알고리즘] 백준 10814 나이순 정렬 -정렬- (0) | 2020.06.24 |
---|---|
[알고리즘] 프로그래머스 다음 큰 숫자 -연습문제, 문자열- (0) | 2020.04.22 |
[알고리즘] 프로그래머스 문자열 압축 -2020 KAKAO BLIND RECRUITMENT- (0) | 2020.04.15 |
[알고리즘] 프로그래머스 H-Index -정렬- (0) | 2020.04.14 |
[알고리즘] 프로그래머스 가장 큰 수 -정렬- (2) | 2020.03.11 |
Comments