Algorithm/[프로그래머스] Java

[프로그래머스] Lv. 1 | 이상한 문자 만들기

구구르밍 2023. 12. 22. 17:46

 

 


이상한 문자 만들기


 

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 

각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 

각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

 


제한사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

 


입출력 예


입출력 예 설명

입출력 예 #1

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 

각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 

따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

 

 

 

 


    코드


 

class Solution {
    public String solution(String s) {
        String answer = "";
        return answer;
    }
}

 


풀이

class Solution {
    public String solution(String s) {
        String answer = ""; 

        // 입력된 문자열을 한 문자씩 나누어 배열에 저장
        String[] str = s.split("");  

        // 각 단어 내에서의 문자 위치(인덱스)를 추적하는 변수 
        int idx = 0; 

        for(int i = 0; i < str.length; i++) { 
            // 현재 문자가 공백인 경우
            if(str[i].equals(" ")) {  
                idx = 0;
            // 현재 문자가 단어의 짝수 인덱스에 위치하는 경우     
            } else if(idx % 2 == 0) {  
                str[i] = str[i].toUpperCase(); 
                idx++;  
            // 현재 문자가 단어의 홀수 인덱스에 위치하는 경우
            } else if(idx % 2 != 0) {  
                str[i] = str[i].toLowerCase();  
                idx++;  
            // 변환된 문자를 결과 문자열에 추가
            answer += str[i];
        } 
        
        return answer;
    }
}

 

 

split 메소드: 주어진 구분자를 사용하여 문자열을 분할하고, 결과로 문자열 배열을 반환
"" (빈 문자열)을 구분자 -> 문자열 s가 각각의 문자로 분할


idx 역할

  • 초기화: idx는 0으로 초기화 -> 각 단어의 첫 번째 문자를 '짝수 번째' 위치로 여기기 위해
  • 짝수/홀수 판단: idx % 2를 사용하여 현재 문자가 짝수 위치에 있는지 홀수 위치에 있는지를 판단
  • 공백 검출 시 리셋: 만약 공백 문자(" ")를 만나면, idx는 0으로 다시 설정. 이는 새로운 단어가 시작될 때마다 첫 번째 문자를 짝수 위치로 여기기 위해
  • 인덱스 증가: 각 문자를 처리한 후에 idx는 1 증가하여 다음 문자의 위치를 나타냄

 


 

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr