문제
https://programmers.co.kr/learn/courses/30/lessons/12930?language=java
코딩테스트 연습 - 이상한 문자 만들기
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을
programmers.co.kr
풀이
문자열 + 구현 문제이다. 특히나 프로그래머스에서는 이런 비슷한 문자열 문제가 많으니 감을 잡으면 쉽게 풀 수 있을 것이다.
우선 temp라는 문자열 변수를 만들어 공백을 기준으로 문자열을 담아주고 answer에 담아줄 수 있도록 하였다. 이후에는 문자열의 모든 원소에 대해 탐색할 수 있도록 for문을 돌려주어 해당 문자가 공백이 아니면 temp에 더해주었고, 공백이라면 answer에 공백을 더하여 원래 문자열인 s와 answer 사이의 컨벤션을 맞추어주었다. 또한 공백을 만났다는 것은 이 기점으로 temp에 공백을 기준으로 잘린 문자가 모두 들어왔다는 뜻이므로 대/소문자 구분을 주어 answer에 담아주었다.
주의할 점은 for문을 돌다 i가 마지막 인덱스라면 뒤에 공백이 없기 때문에 연산을 해주지 못하는 것을 고려해서 i가 마지막 인덱스일때는 해당 문자가 공백이 아니여도 answer에 대/소문자 구분 연산을 하고 answer에 넣어주도록 처리하면 문제를 해결할 수 있다.
코드
class Solution {
public String solution(String s) {
String answer = "";
String temp = "";
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == ' ') {
for(int j = 0; j < temp.length(); j++) {
if(j % 2 == 0) {
answer += Character.toUpperCase(temp.charAt(j));
} else {
answer += Character.toLowerCase(temp.charAt(j));
}
}
answer += ' ';
temp = "";
} else {
temp += s.charAt(i);
if(i == s.length() - 1) {
for(int j = 0; j < temp.length(); j++) {
if(j % 2 == 0) {
answer += Character.toUpperCase(temp.charAt(j));
} else {
answer += Character.toLowerCase(temp.charAt(j));
}
}
}
}
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로그래머스 Level1 완주하지 못한 선수 Java (0) | 2022.05.25 |
---|---|
[프로그래머스] 프로그래머스 Level1 키패드 누르기 Java (카카오 코딩테스트) (0) | 2022.05.24 |
[프로그래머스] 프로그래머스 Level2 k진수에서 소수 개수 구하기 Java (카카오 코딩테스트) (0) | 2022.05.23 |
[프로그래머스] 프로그래머스 Level1 예산 C++ (0) | 2022.05.20 |
[프로그래머스] 프로그래머스 Level1 체육복 C++ (0) | 2022.05.19 |