문제
풀이
(1) 문제 분석하기
- 문자열 전체의 짝/홀수 인덱스가 아닌 공백을 기준으로 단어별 짝/홀수 인덱스
- 입력 받은 문자열 전체를 반복문으로 돌면서 각 단어의 짝/홀수 인덱스를 판단
- 공백을 만나면 인덱스를 판단하는 변수 0으로 초기화
(2) 슈도코드 작성하기
정답을 담을 answer 변수 선언
단어 안에서의 인덱스를 카운트 해 줄 index 변수 선언
for(입력 받은 문자열의 길이만큼){
if(공백을 만나면){
index 초기화
answer에 공백 추가
}else if(index가 짝수면){
answer에 i번째 문자열을 대문자로 추가
index++
}else if(index가 홀수면){
answer에 i번째 문자열을 소문자로 추가
index++
}
}
정답 변수 answer 반환
(3) 코드 구현하기
package algorithm.test05;
public class WeirdString {
// 공백을 기준으로 단어별 인덱스
// 단어 안에서 index를 부여해줄 변수와 새로운 문자열 변수 선언
// 입력 받은 문자열의 전체를 for문으로 돌면서 홀짝 인덱스 판별
// 공백을 만나면 index 0으로 초기화
public static void main(String[] args) {
String s = "try hello world";
System.out.println(solution(s));
}
public static String solution(String s) {
String answer = "";
int index = 0;
for (int i = 0; i < s.length(); i++) {
if (String.valueOf(s.charAt(i)).equals(" ")) {
index = 0;
answer += " ";
} else if (index % 2 == 0) {
answer += String.valueOf(s.charAt(i)).toUpperCase();
index++;
} else if (index % 2 != 0){
answer += String.valueOf(s.charAt(i)).toLowerCase();
index++;
}
}
return answer;
}
}
+) 삼항 연산자를 이용한 풀이
package algorithm.test05;
public class WeirdString {
// 공백을 기준으로 단어별 인덱스
// split으로 String형 배열로 변환
// 공백을 판단하여 cnt 변수에 0 or 1 대입
// cnt의 짝/홀을 판단하여 answer 변수에 대문자 or 소문자 대입
public static void main(String[] args) {
String s = "try hello world";
System.out.println(solution(s));
}
public static String solution(String s) {
String answer = "";
// 삼항연산자를 사용한 더 간결한 코드
// cnt를 먼저 올리기 때문에 대문자 소문자 순서를 바꿔줘야함
int cnt = 0;
String[] strArr = s.split("");
for (int i = 0; i < strArr.length; i++) {
cnt = (strArr[i].equals(" ") ? 0 : cnt + 1 );
answer += (cnt % 2 == 0 ? strArr[i].toLowerCase() : strArr[i].toUpperCase());
}
return answer;
}
}
'📊 Algorithm&SQL' 카테고리의 다른 글
[Java/프로그래머스] 콜라츠 추측 (0) | 2022.11.19 |
---|---|
[Java/프로그래머스] 자릿수 더하기 (0) | 2022.11.19 |
[Java/프로그래머스] 완주하지 못한 선수 (0) | 2022.11.19 |
[Java/프로그래머스] 수박수박수박수박수박수? (0) | 2022.11.19 |
[Java/프로그래머스] 나누어 떨어지는 숫자 배열 (0) | 2022.11.19 |