728x90
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
s | return |
"try hello world" | "TrY HeLlO WoRlD" |
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
for (char c : s.toCharArray()) {
if (c == ' ') {
answer += " ";
cnt = 0;
} else {
if (cnt % 2 == 0)
answer += (c + "").toUpperCase();
else
answer += (c + "").toLowerCase();
cnt++;
}
}
return answer;
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
for (char c : s.toCharArray()) {
if (c == ' ') {
answer += " ";
cnt = 0; // 새로운 단어 시작
} else {
if (cnt % 2 == 0)
answer += Character.toUpperCase(c);
else
answer += Character.toLowerCase(c);
cnt++; // 단어마다 카운팅
}
}
return answer;
}
}
|
cs |
문자를 1글자씩 반복하며 공백은 그대로 짝수 번째는 대문자로 홀수 번째는 소문자로 바꿔 더하기 했습니다. |
1
2
3
4
5
6
7
8
9
10
11
|
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
class Solution {
public String solution(String s) {
AtomicInteger index = new AtomicInteger(0);
return s.chars().mapToObj(v->{
index.set((v ==' ') ? 0 : index.get()+1);
return (index.get()%2!=0) ? ((char)v+"").toUpperCase() : ((char)v+"").toLowerCase();
}).collect(Collectors.joining());
}
}
|
cs |
String을 intStream으로 만들어 처리해 보았다. map()에서 외부 지역 변수를 접근하기 위하여 스레드에 안정적인 AtomicInteger를 사용해야 한다. AtomicInteger set()은 변경, get()은 얻기 이다. 공백일 경우 -1로 만들고 아니면 1을 증가시켰다. 새로운 단어의 index값이 0부터 증가되어야 하므로 -1로 초기화 함 |
728x90
'프로그래머스 코딩(자바) > Level 1' 카테고리의 다른 글
Programmers Level 1 - 시저 암호 (0) | 2023.03.13 |
---|---|
Programmers Level 1 - Summer/Winter Coding(~2018)예산 (0) | 2023.03.10 |
Programmers Level 1 - 3진법 뒤집기 (0) | 2023.03.10 |
Programmers Level 1 - 같은 숫자는 싫어 (0) | 2023.03.10 |
Programmers Level 1 - 최대공약수와 최소공배수 (0) | 2023.03.10 |