반응형
문제 설명 :
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 조건 :
1. 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
자 지금부터 이 이상한 문제를 풀어보겠습니다.
이 문제에서 신경써야 할 것은 무엇인지 생각해봅시다....3분간!
그러다 보면!!!!!!!!!!! 가장 주의할 점은 " "!!! 즉 공백입니다.
공백이 어디에 있는지, 어디에 몇개나 있는지를 신경써야 하는 문제입니다.
제가 생각하기에고려해야할 사항은 총 3가지로 나눌 수 있는데요!!!
1. 예시처럼 글자 가운데에 한개씩 있다.
2. 글자 맨 뒤에 공백이 숨어있다.
3. 공백이 한개가 아닌 여러개이다.
이 3가지 조건을 충족시키기 위해 코드를 짜봅시다.(저는 1번, 3번밖에 생각을 못했었어요...그러다 마지막에 생각났음...)
public String solution(String s) {
StringBuilder answer = new StringBuilder();
String[] firstStrings = s.split(" ");
int stringLength = s.length();
for(int i=0; i<firstStrings.length; i++) {
String[] secondStrings = firstStrings[i].split("");
StringBuilder result = new StringBuilder();
for(int j=0; j<secondStrings.length; j++) {
if(!secondStrings[j].isEmpty()) {
if(j%2 == 0) result.append(secondStrings[j].toUpperCase());
else result.append(secondStrings[j].toLowerCase());
}
}
if(i != firstStrings.length-1) answer.append(result).append(" ");
else answer.append(result);
}
int length = stringLength-answer.toString().length();
if(length != 0)
for(int i=0; i<=stringLength-answer.toString().length(); i++)
answer.append(" ");
return answer.toString();
}
짠 이런 더러운 코드가 나옵니다.(역시 전 코드에 재능이 없나봅니다....휴.... 더럽....)
순서대로, String 보다 StringBuilder가 메모리를 적게 차지하고 사용하기 편한거 아시죠?(모르시면 공부!! 물론 크게 상관은 없어요..)
전 위에처럼 구성을 했어요. 모르는 곳엔 댓글 달아주시면 가르쳐드리겠습니다.
모두 화이팅!!!
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 level2 문제 : 124나라(java) (0) | 2018.11.05 |
---|---|
프로그래머스 level1 문제 : 자리수 더하기(java) (0) | 2018.10.26 |
프로그래머스 level1 문제 : 예산(java) (0) | 2018.10.24 |
프로그래머스 level1 문제 : 직사각형 별찍기(java) (0) | 2018.10.24 |
프로그래머스 level1 문제 : 소수찾기(java) (0) | 2018.10.23 |