Coding Test/Algorithm
Programmers] 이상한 문자 만들기
littlezero48
2022. 11. 18. 19:13
|
[제한사항]
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
[입출력 예]
추측)
공백으로 단어별로 나누어서 단어 개수를 가져와 전체 그 수만큼 for문을 돌리고 또 그 단어의 길이 만큼 for문을 돌려 인덱스 0부터 시작해 짝수는 대문자, 홀수는 소문자로 출력하면 될거 같다. 공백은 대문자화나 소문자화에 영향을 안받을거 같다.
소스코드) - 성공 코드
String answer = "";
int cnt = 0;
String[] s_arr = s.split("");
for (int i=0; i<s_arr.length; i++){
if(s_arr[i].equals(" ")){
cnt = 0;
answer += " ";
} else {
answer += (cnt%2==0) ? s_arr[i].toUpperCase() : s_arr[i].toLowerCase();
cnt++;
}
}
return answer;
소스코드) - 시도했지만 실패한 코드
더보기
String answer = "";
String[] s_arr = s.split(" ");
for(int i=0; i<s_arr.length; i++){
System.out.println(s_arr[i]);
}
for (int i=0; i<s_arr.length; i++){
for (int k=0; k<s_arr[i].length(); k++){
String a = s_arr[i].substring(k,k+1);
answer += (k % 2 == 0) ? a.toUpperCase() : a.toLowerCase();
}
answer += " ";
}
return answer.trim();
리뷰)
생각한대로 코드를 짰는데 예시에서는 성공했지만 계속 예외가 떴다. 예외를 알지 못하는 상태로 계속 반복되어서 다른분이 푸신걸 참조해 흐름을 대략 파악하고 다시 코드를 짜봤다. (며칠후에 잊혀질 쯤 꼭 다시 해볼 것)
빈칸으로 단어를 나누지 않고 모든 스트링을 다 나누어 배열로 나누고 for문을 돌린다. 처음부터 돌릴때 처음이 공백이 아니면 단어의 시작이므로 count를 0으로 하여 0부터 시작해 짝수는 대문자, 홀수는 소문자로 출력할 수 있게 한다. 출력을 하면 count를 하나더 올려 다음으로 넘어간다. 이런식으로 단어하나를 다 출력하고 공백을 만나면 count를 초기화시킨다. 그리고 다시만난 문자를 시작으로 다시 이렇게 반복하면 성공한다.
아직도 첫번째 시도 했던 방법이 왜 안됬는지 모르겠다. 이건 기술매니저님께 한번 물어봐야겠다.
: 텍스트로 입력값으로 들어오는 텍스트에도 뒤에 공백이 그대로 들어오는 경우도 있을건데, 그걸 다 잘라버리는 경우가 생겨서 그런거 같다.