Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- DI
- Spring Cloud Gateway
- S3
- 알고리즘
- Invalid property 'principal.username' of bean class
- aop
- AccessToken
- 소수찾기 java
- 형상관리
- 우아한 테크러닝
- TestContainers
- RefreshToken
- netty
- interface
- spring aop
- redissonlock aop
- 낙관적 락 롤백
- 낙관적 락 재시도
- jpa
- ObjectOptimisticLockingFailureException
- 백준
- java
- ObjectOptimisticLockingFailureException 처리
- @transactional
- OptimisticLock
- multimodule testcontainers
- springsecurity
- 멀티모듈 테스트컨테이너
- spring DI
- kotest testcontainers
Archives
- Today
- Total
조급하면 모래성이 될뿐
[프로그래머스] JadenCase문자열 만들기 본문
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12951?language=java
나의 풀이
1. 띄어쓰기(" ")단위로 split하여 배열에 담는다.
2. 단어들을 순서대로 처리한다.
3. 먼저 단어를 모두 소문자로 변경.
4. 첫글자가 알파벳인 경우에만 대문자로 변경.
5. 공백이 연속해서 나올 수 있다. " "단위로 split하였으니, 마지막에 공백이나오는 조건을 처리해주자.
ex) "aaa bbb "의 경우 "Aaa Bbb "가 되야한다, " a "의 경우 " A "가 되야한다.
코드
package Programmers.Level2;
import java.util.Arrays;
public class MakeJadenCase {
public static void main(String[] args) {
String s = "ab a ";
String answer = solution(s);
System.out.println(answer);
}
public static String solution(String s) {
// 1. " "단위로 나눈다.
String[] words = s.split(" ");
StringBuilder sb = new StringBuilder();
// 2. 첫글자가 숫자이면 대문자로 변경하지 않는다.
// 3. 나머지는 첫글자만 대문자로 변경한다.
for ( int i = 0 ; i < words.length; i ++ ) {
String word = words[i];
if ( word.equals("") ) word = "";
else {
word = word.toLowerCase();
int ascii_num = word.charAt(0) ;
// 영문자인경우는 첫글자 대문자 + 나머지 소문자 하면 됨
if ( (ascii_num >= 'a' && ascii_num <= 'z') ) {
word = String.valueOf(word.charAt(0)).toUpperCase()+word.substring(1,word.length());
}
}
sb.append(word);
if( i != words.length-1 ) sb.append(" ");
}
if(s.charAt(s.length()-1)==' ') sb.append(" ");
return sb.toString();
}
public static String solution2(String s) {
String answer ="" ;
String[] sS = s.toLowerCase().split("");
// " "인경우 true이다.
boolean flag = true;
for ( String word : sS ) {
answer += flag ? word.toUpperCase() : word;
flag = word.equals(" ") ? true : false;
}
return answer;
}
}
제출 결과
후기
내 풀이로 정답처리는하였지만, 훨씬 간단하게 구현한 다른사람의 풀이를 참조하였다.
1. 입력문자열 s를 모두 소문자로 변경해준다.
2. ""로 split하여 모든글자 하나하나를 처리한다.
3. " "를 만나는 경우에는 flag값을 true로 변경해준다. 이 경우는 다음글자가 Upper되어야하는 경우이다.
4. 이러면 공백이 아무리많거나, 첫글자가 영어가 아니더라도 모든 조건을 만족하게 된다....
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 튜플 (0) | 2020.04.03 |
---|---|
[프로그래머스] 괄호변환 (0) | 2020.04.01 |
[프로그래머스]행렬의 곱셈 (0) | 2020.01.07 |
[프로그래머스] 캐시 (0) | 2020.01.05 |
[프로그래머스]숫자의 표현 (0) | 2020.01.04 |