본문 바로가기

Algorithm/프로그래머스

프로그래머스 level1 문제 : 이상한 문자 만들기(java)

반응형

문제 설명 : 


문자열 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가 메모리를 적게 차지하고 사용하기 편한거 아시죠?(모르시면 공부!! 물론 크게 상관은 없어요..)


전 위에처럼 구성을 했어요. 모르는 곳엔 댓글 달아주시면 가르쳐드리겠습니다.


모두 화이팅!!!





반응형