반응형
https://programmers.co.kr/learn/courses/30/lessons/12930
코딩테스트 연습 - 이상한 문자 만들기
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을
programmers.co.kr
import java.util.Arrays;
class Solution {
public String solution(String s) {
String answer = "";
int count = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) != ' '){
if (count % 2 == 1) {
answer += Character.toLowerCase(s.charAt(i));
} else {
answer += Character.toUpperCase(s.charAt(i));
}
count++;
} else {
answer += " ";
count = 0;
}
}
return answer;
}
}
이번 문제는 한참을 풀어도 테스트 케이스에서 계속 실패해서 푸는데 한참 걸렸다.
여기서 주의해야 할 점은
a. 문제에서 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 라고 말한 부분이다. 즉 단어 사이에 공백이 두 개 이상일 수도 있다는 것과
b. 이 경우이다.
풀이
1. int count를 선언해준다(이유는 문자열 상의 문자의 인덱스를 구하기 위해(짝, 홀 판단을 위해))
2. 문자열 s의 길이만큼 for문을 돌리는데 해당 인덱스의 문자가 공백일 경우와 아닐 경우를 나눠서 판단해주어야 한다.
2-1. 공백이 아닐 경우: count에 따라 짝, 홀을 판단해 대문자나 소문자로 바꿔준다. 바꿔주고 나서 count++해주기
2-2. 공백일 경우: 반환할 답에 공백을 추가해주고 count를 0으로 초기화시킨다.(이유: 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.)
728x90
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스 자바 JAVA] 숫자 문자열과 영단어 (level 1) (0) | 2022.03.18 |
---|---|
[프로그래머스 자바 JAVA] 전화번호 목록 (level 2) (0) | 2022.03.15 |
[프로그래머스 자바 JAVA] 더 맵게 (level 2) (0) | 2022.03.15 |
[프로그래머스 자바 JAVA] 모의고사 (level 1) (0) | 2022.03.14 |
[프로그래머스 자바 JAVA] 로또의 최고 순위와 최저 순위 (level 1) (0) | 2022.03.14 |
댓글