알고리즘/프로그래머스
[211218][220103] 이상한 문자 만들기*(/)
감자탈출기
2021. 12. 18. 20:07
시간 정말 오래 걸렸고 테스트 케이스는 통과하는데 채점하면 fail 다수.
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
String[] arr = s.split(" ");
String[] newArr = new String[arr.length];
String var = "";
for(int i = 0; i < arr.length; i++) {
StringBuilder sb = new StringBuilder("");
newArr[i] = arr[i].trim();
for(int j = 0; j < newArr[i].length(); j++) {
if(j%2 == 0) {
var = String.valueOf(newArr[i].charAt(j)).toUpperCase();
System.out.println("짝수" + var);
} else if(j%2 == 1){
var = String.valueOf(newArr[i].charAt(j)).toLowerCase();
System.out.println("홀수" + var);
}
sb.append(var);
}
newArr[i] = String.valueOf(sb);
s = s.replace(newArr[i].toLowerCase(), newArr[i]);
answer = s;
}
return answer;
}
}
리뷰 : 자바에서 split()은 후행 공백을 처리해주지 않는다.
따라서 String.split(" ") 가 아닌 split("") 으로 문자 하나하나 잘라서 처리해 주어야 함.
풀이
idx 이해하느라 힘들었음
문자열 비교 equals()
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
String[] arr = s.split("");
int idx = 0;
for(int i = 0; i < arr.length; i++) {
if(arr[i].equals(" ")) {
idx = 0;
arr[i] = " ";
} else {
if(idx%2 == 0) {
arr[i] = arr[i].toUpperCase();
} else {
arr[i] = arr[i].toLowerCase();
}
idx++;
}
}
answer = String.join("", arr);
return answer;
}
}
[220103] 오래 걸렸지만 idx 이해 함
import java.util.*;
class Solution {
public String solution(String s) {
StringBuffer sb = new StringBuffer();
String[] sArr = s.split("");
int idx = 0;
for(String str : sArr){
if(!str.equals(" ")){
if(idx%2 == 0){
sb.append(str.toUpperCase());
} else if(idx%2 == 1){
sb.append(str.toLowerCase());
}
idx++;
} else if(str.equals(" ")) {
sb.append(str);
idx = 0;
}
}
return sb.toString();
}
}