이상한 문자 만들기
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다.
각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
입출력 예 설명
입출력 예 #1
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다.
각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다.
따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
코드
class Solution {
public String solution(String s) {
String answer = "";
return answer;
}
}
풀이
class Solution {
public String solution(String s) {
String answer = "";
// 입력된 문자열을 한 문자씩 나누어 배열에 저장
String[] str = s.split("");
// 각 단어 내에서의 문자 위치(인덱스)를 추적하는 변수
int idx = 0;
for(int i = 0; i < str.length; i++) {
// 현재 문자가 공백인 경우
if(str[i].equals(" ")) {
idx = 0;
// 현재 문자가 단어의 짝수 인덱스에 위치하는 경우
} else if(idx % 2 == 0) {
str[i] = str[i].toUpperCase();
idx++;
// 현재 문자가 단어의 홀수 인덱스에 위치하는 경우
} else if(idx % 2 != 0) {
str[i] = str[i].toLowerCase();
idx++;
// 변환된 문자를 결과 문자열에 추가
answer += str[i];
}
return answer;
}
}
split 메소드: 주어진 구분자를 사용하여 문자열을 분할하고, 결과로 문자열 배열을 반환
"" (빈 문자열)을 구분자 -> 문자열 s가 각각의 문자로 분할
idx 역할
- 초기화: idx는 0으로 초기화 -> 각 단어의 첫 번째 문자를 '짝수 번째' 위치로 여기기 위해
- 짝수/홀수 판단: idx % 2를 사용하여 현재 문자가 짝수 위치에 있는지 홀수 위치에 있는지를 판단
- 공백 검출 시 리셋: 만약 공백 문자(" ")를 만나면, idx는 0으로 다시 설정. 이는 새로운 단어가 시작될 때마다 첫 번째 문자를 짝수 위치로 여기기 위해
- 인덱스 증가: 각 문자를 처리한 후에 idx는 1 증가하여 다음 문자의 위치를 나타냄
https://school.programmers.co.kr/learn/courses/30/lessons/12930