https://programmers.co.kr/learn/courses/30/lessons/12930#
코딩테스트 연습 - 이상한 문자 만들기
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을
programmers.co.kr
풀이
처음에는 공백을 기준으로 문자열을 나누기 위해 split(" ")을 사용했는데, 테스트 점수가 68점이 나왔다.
틀린 점을 모르겠어서 찾아보니, split(" ")은 후행 공백을 처리해주지 않는다는 점을 알게 되었다.
만약 " hello "라는 문자열을 split(" ")으로 나눈다면
{ "", "", "hello", "", ""] 가 아니라 {"", "", "hello"]로 처리한다는 것이다.
해결법! index 라는 변수를 새롭게 만들어주고 문자열s가 아닌, index를 기준으로 짝수홀수 인덱스를 판단한다.
단어(공백 기준)별로 인덱스를 판단해야하기 때문에, 공백을 만나면 index=0으로 초기화한다.
class Solution {
public String solution(String s) {
char[] c = s.toCharArray();
int index = 0;
for(int i=0; i<c.length;i++){
if(c[i]==' '){index=0;}
else {
if(index%2==0){
c[i]=Character.toUpperCase(c[i]);
}
else{
c[i]=Character.toLowerCase(c[i]);
}
index++;
}
}
return String.valueOf(c);
}
}
+
다른사람풀이.
만약 split()함수를 쓰고 싶다면 split("")를 이용하면 후행 공백도 다 처리가 된다.
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
String[] array = s.split("");
for(String ss : array) {
cnt = ss.contains(" ") ? 0 : cnt + 1;
answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase();
}
return answer;
}
}
+
이건 수정 전 68점짜리 코드...^^
class Solution {
public String solution(String s) {
// 공백을 기준으로 문자열 자르기
String[] answer = s.split(" ");
StringBuilder sb = new StringBuilder();
for(int i=0;i<answer.length;i++){
System.out.println(answer[i]);
sb.append(charTo(answer[i]));
if(i!=answer.length-1)
sb.append(" ");
}
return sb.toString();
}
// 대소문자 변환함수
String charTo(String s){
char[] c = s.toCharArray();
for(int i=0;i<s.length()-1;i=i+2){
c[i]=Character.toUpperCase(c[i]);
c[i+1]=Character.toLowerCase(c[i+1]);
}
if(s.length()%2 !=0){
c[s.length()-1]=Character.toUpperCase(c[s.length()-1]);
}
return String.valueOf(c);
}
}
'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 : 콜라츠 추측 (0) | 2022.02.07 |
---|---|
[Java] 프로그래머스 : 3진법 뒤집기 (0) | 2022.02.07 |
[Java] 프로그래머스 : 문자열 내 마음대로 정렬하기 (0) | 2022.02.07 |
[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[]) (0) | 2022.01.31 |
[Java] 프로그래머스 : 서울에서 김서방 찾기 (0) | 2022.01.31 |