본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 이상한 문자 만들기(level 1)

by 코리늬 2018. 12. 17.
  • 이상한 문자 만들기

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.

입출력 예

sreturn
try hello worldTrY HeLlO WoRlD
입출력 예 설명

try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.

public class StrangeString {
public String solution(String str) {
String answer = "";
int count = 0;
int length = str.length();
String[] arr = str.split("");
answer = countSpace(answer, count, length, arr);
return answer;
}

private String countSpace(String answer, int count, int length, String[] arr) {
boolean judge = false;
for (int i = 0; i < length; i++) {
if (arr[i].equals(" ")) {
judge = false;
count = 0;
} else {
judge = true;
count++;
if (count % 2 != 0) {
arr[i] = arr[i].toUpperCase();
} else {
arr[i] = arr[i].toLowerCase();
}
}
answer = answer + arr[i];
}
return answer;
}

/* public static void main(String[] args) {
StrangeString s = new StrangeString();
String str = " try hello world";
System.out.println(s.solution(str));
}*/
}


후기

문제를 처음에 윗 부분만 읽고 간단하게 Uppercase를 사용했지만 당연히 실패 ㅎㅎ공백을기준으로, 라는 말이 있었다.근데 공백의 인덱스까지 카운트를 해야하는지? 아니면 공백은 몇개가 나오든 제외시키는건지?이 부분이 모호했다.
그래서 이 부분에 대해서는 동일 문제를 검색해서 파악을 한 후, 작성했다.공백이 나왔을 때의 경우를 세부적으로 나눠서 풀었는데 처음 count만으로 작성하기에는 한계가 있었다.그래서 boolean 함수를 추가해줬다.공백을 어떻게 처리할지가 내 입장에서는 제일 까다로웠다.
다음에 한번 더 풀어야할듯

댓글