반응형
문제설명
- 문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
- 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
- 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
"try hello world" | "TrY HeLlO WoRlD" |
[ 내가 푼 방법 ]
import java.util.ArrayList;
class Solution {
public String solution(String s) {
String answer = "";
String[] spaceStrs = s.split(""); //한글자씩 들어가있음
String[] noneSpaceStrs = s.split(" "); //단어씩 들어가있음
ArrayList<Integer> spaceIdx = new ArrayList<>();
ArrayList<String> arr = new ArrayList<>();
//공백 Idx 구하기
for (int i=0; i<spaceStrs.length; i++) {
if (spaceStrs[i].equals(" ")) {
spaceIdx.add(i);
}
}
//단어 홀수->소문자, 짝수와0->대문자
for (int i=0; i<noneSpaceStrs.length; i++) {
char[] chars = noneSpaceStrs[i].toCharArray();
for (int j=0; j<chars.length; j++) {
if (j % 2 != 0) {
arr.add(String.valueOf(chars[j]).toLowerCase());
} else {
arr.add(String.valueOf(chars[j]).toUpperCase());
}
}
}
//공백 추가
for (int i=0; i<spaceIdx.size(); i++) {
arr.add(spaceIdx.get(i), " ");
}
//String에 값 담기
for (int i=0; i<arr.size(); i++) {
answer += arr.get(i);
}
return answer;
}
}
단어별로 인덱스를 짝수, 홀수 구분해야하기 때문에 이중배열로 만들기로함
1. 문자열을 split() 함수로 쪼갠다.
→ 공백 포함하여 한 단어씩 배열로 만들고, 공백 뺀 단어별 배열로 2개를 만든다.
2. 공백의 index를 구하여 새로운 배열에 넣어준다.
3. 단어별 배열을 한 단어씩 char[] 배열에 담아주고, 짝수/홀수 구분하여 toUpperCase(), toLowerCase() 함수로 바꿔준다.
4. 마지막으로 공백 index의 배열을 이용해 공백을 추가해준다.
[ 다른 풀이방법 ]
public static String solution(String s) {
String answer = "";
String[] strs = s.split("");
int cnt = 0;
for (String str : strs) {
cnt = str.contains(" ") ? 0 : cnt+1;
answer+= cnt % 2 == 0 ? str.toLowerCase() : str.toUpperCase();
}
return answer;
}
→ 문자열을 split() 함수로 쪼개서 String[] 배열에 담은 다음 for문을 돌린다.
이때, int cnt = 0; 이라는 변수를 선언해주고 이 cnt 변수가 index 역할을 하게된다.
for문에서 str 문자에 " " (공백)이 포함되어있으면 cnt = 0으로 초기화하고, 그렇지 않으면 cnt에 +1을 해준다.
그러면 단어별로 index가 cnt에 담기게된다.
그 후, cnt가 짝수 / 홀수인지 확인하여 대문자, 소문자로 변환해주면 된다.
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 두 개 뽑아서 더하기 - Java(자바) (0) | 2022.10.30 |
---|---|
[프로그래머스] 나누어 떨어지는 숫자 배열 - Java(자바) (0) | 2022.10.18 |
[프로그래머스] 예산 - Java(자바) (0) | 2022.10.10 |
[프로그래머스] 같은 숫자는 싫어 (Queue, Stack) - Java(자바) (2) | 2022.10.05 |
[프로그래머스] 3진법 뒤집기 - Java(자바) (2) | 2022.10.03 |