https://programmers.co.kr/learn/challenges?selected_part_id=6174
[문제 설명]
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | return |
try hello world | TrY HeLlO WoRlD |
입출력 예 설명
try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.
[풀이]
처음에는 원소가 홀 수이면 소문자, 짝 수이면 대문자를 넣어줘야 하기 때문에 홀 수, 짝 수를 구별하는 conv, boolean형 변수를 선언합니다.
s의 한 원소마다 비교할 것이기 때문에 문자열 s의 길이만큼 반복문을 선언해줍니다.
만약 s.charAt(i) 원소가 " " 공백이라면 띄어쓰기 구간이므로 다음 오는 문자는 대문자가 될 것입니다.
그러기 때문에 conv를 true로 바꿔 주고 result에 공백을 덧붙여서 " "에 대한 반복문을 건너뛰어줍니다.
만약 s.charAt(i) 원소가 대문자 or소문자일 경우 upperCase, lowerCase를 통해 변환 시켜준 뒤 result에 덧붙여 줍니다.
마지막으로 다음 글자는 현재 문자의 대, 소의 반대일 것이므로 conv를 !연산을 해주면 됩니다.
[코드]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public String solution(String s) {
String result = "";
boolean conv = true;
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
conv = true;
result += " ";
continue;
}
if(conv) {
result += (s.charAt(i)+"").toUpperCase();
}else {
result += (s.charAt(i)+"").toLowerCase();
}
conv = !conv;
}
return result;
}
|
cs |
'코딩테스트 > 프로그래머스 level 1' 카테고리의 다른 글
[프로그래머스 level_1] 정수 제곱근 판별 for JAVA (0) | 2020.05.13 |
---|---|
[프로그래머스 level_1] 예산 for JAVA (0) | 2020.05.12 |
[프로그래머스 level_1] 제일 작은 수 제거하기 for JAVA (0) | 2020.05.06 |
[프로그래머스 level_1] 행렬의 덧셈 for JAVA (0) | 2020.05.04 |
[프로그래머스 level_1] 문자열 내 p와 y의 개수 for JAVA (0) | 2020.04.25 |