프로그래머스 - 이상한 문자 만들기 (Level 1)
2023. 12. 30. 00:25ㆍ코딩테스트 정리(자바)
728x90
처음 풀이
-> 각 단어는 하나 이상의 공백문자로 되어있습니다.
이 조건으로 인해 틀림. 공백문자가 여러개 있을 수 있음.
import java.util.*;
class Solution {
public String solution(String s) {
//1. s를 StringToknizer에 담아 단어만 담기
StringTokenizer st=new StringTokenizer(s);
//2. 반복문으로 해당 인덱스에 맞게 변환하기
String result="";
StringBuilder sb=new StringBuilder();
while(st.hasMoreTokens()){
result=st.nextToken();
for(int i=0;i<result.length();i++){
char ch=result.charAt(i); //해당 인덱스 문자 가져오기
if(i%2==0)//짝수번째 인덱스라면
sb.append(Character.toUpperCase(ch)); // 대문자로
else //홀수번째 인덱스라면
sb.append(Character.toLowerCase(ch));// 소문자로
}
sb.append(" "); //단어 사이에 공백 넣기
}
//맨 뒤 공백은 제거
sb.deleteCharAt(sb.length()-1);
//StringBuilder 문자열로 반환
String answer = sb.toString();
return answer;
}
}
1. hasMoreTokens()
: StringTokenizer 클래스 객체에서 다음에 읽어 들일 token이 있으면 true, 없으면 false를 return한다.
2. nextToken()
: StringTokenizer 클래스 객체에서 다음토큰을 String 타입으로 반환
3. str.toUpperCase()
: 대상 문자열 str을 대문자로 변환
4. StringBuilder 클래스에서 제공하는 메서드를 사용하여 StringBuilder의 마지막 문자를 제거하는 방법
-> sb.deleteCharAt(sb.length() - 1);
: deleteCharAt() 메서드는 특정 위치의 문자를 제거
두번째 풀이
: 공백문자를 일일히 체크하기로 수정
class Solution {
public String solution(String s) {
// StringBuilder 사용
StringBuilder sb = new StringBuilder();
int offset = 0; //단어마다 짝/홀수 판단할 인덱스
char[] ch = s.toCharArray(); //char 배열로 변환
for (int i = 0; i < ch.length; i++) {
if (ch[i] == ' ') {//공백인지 확인
sb.append(ch[i]);
offset = 0; // offset은 0으로 초기화
continue;
} else { //문자라면 이제 단어 시작
if (offset % 2 == 0) {//offset이 짝수라면
sb.append(Character.toUpperCase(ch[i])); //대문자로 추가
} else { //offset이 홀수라면
sb.append(Character.toLowerCase(ch[i])); //소문자로 추가
}
offset++; //offset 중가
}
}
String answer = sb.toString(); // StringBuilder -> 문자열로 변환
return answer;
}
}
1. 문자열 말고 문자도 대문자로 바꾸는 메소드가 있다
: Character.toUpperCase(ch[i]);
728x90
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 프로그래머스 - 이진 변환 반복하기 (Level 2) (0) | 2023.12.31 |
|---|---|
| 프로그래머스 - 3진법 뒤집기 (Level 1) (0) | 2023.12.31 |
| 프로그래머스 - 시저 암호 (Level 1) (0) | 2023.12.28 |
| 프로그래머스 - 거리두기 확인하기(Level 2) (2) | 2023.12.28 |
| 프로그래머스 - 자연수 뒤집어 배열로 만들기 (Level 1) (2) | 2023.12.25 |