이상한 문자 만들기

김나영·2023년 6월 16일
0

프로그래머스

목록 보기
1/39

문제 : 이상한 문자 만들기

풀이

String[] str = s.split("");
  • 주어진 문자열 s를 split() 함수를 사용하여 배열로 변환

  • 각 단어별로 나누기 위해 공백을 기준으로 split

int index = 0;
for (int i = 0; i <str.length ; i++) {
}
  • 각 단어별 인덱스를 적용하기 위해 index 변수를 만들어 주고 for문을 생성
if(str[i].equals(" ")){
   index = 1;
  • equals를 사용하여 공백을 먼저 처리함

  • 문자열 중에서 공백을 만나면 idx를 1로 초기화시켜줌

  • 공백 뒤에는 짝수가 되어 대문자로 출력되기 때문에 1로 초기화를 시켜줌

answer += (index%2==0)? str[i].toUpperCase() : str[i].toLowerCase(); 
index++;
  • 삼항 연산자 사용

  • idex가 짝수이면 toUpperCase() 함수로 대문자로 변경

  • 그게 아니라면 toLowerCase() 함수로 소문자로 변경하여 answer에 값을 저장

  • 이후 idex를 증가시켜 홀,짝을 비교할 수 있도록 함

return answer;
  • 이런식으로 for문에 의해 계속 루프가 돌면 문자가 answer에 저장되고 그 answer를 return

전체 코드

class Solution {
    public String solution(String s) {
       String answer = "";
        int index = 0;
        String[] str = s.split("");
        for (int i = 0; i <str.length ; i++) {
            if(str[i].equals(" ")){
                index = 1;
            }
            answer += (index%2==0)? str[i].toUpperCase() : str[i].toLowerCase(); //" "
            index++;
        }        
        return answer;
    }
}

문제 발생

  • 테스트 케이스는 성공했는데 제출 후 채점하기는 실패
  • 문자열의 인덱스 순서로 시도했다가 실패
  • 단어의 공백을 기준으로 짝/홀을 구분하여 대문자, 소문자로 바꾸라는 제한 사항을 보고 코드를 수정
  • String 배열의 길이만큼 for문을 구현했는데 위치를 나타내는 [i]를 생략해서 실패

해결 완료

String[] str = s.split("");
  • split(" ")을 사용했다가 실패해서 split("")으로 변경
for (int i = 0; i <str.length ; i++) {
    if(str[i].equals(" ")){
      index = 1;
  • str.equals(" ") 로 적은 것을 str[i].equals(" ")로 변경하니 해결 완료
    ([i]가 빠졌다는 걸 거의 2시간 가까이 몰랐다.....)

0개의 댓글