새소식

알고리즘 문제풀이/프로그래머스

[대소문자 변환] level1 프로그래머스 이상한 문자 만들기 파이썬, 자바 풀이

  • -

프로그래머스 연습문제 이상한 문자 만들기 파이썬 풀이

문제 정리

  1. 단어는 하나 이상의 공백문자로 구분되어 있다.
  2. 단어의 짝수번째 알파벳은 대문자로 변경
  3. 단어의 홀수번째 알파벳은 소문자로 변경
  4. 변경된 문자열을 리턴하여라
  5. 첫 번째 글자는 0번째 인덱스로 본다


대소문자 변환(파이썬)

upper 함수와 lower함수를 이용하여 바꿀 수 있습니다.

  1. 대문자 변환

    s = "abc"
    new = s.upper()
    print(new) # ABC
  2. 소문자 변환

    s = "ABC"
    new = s.lower()
    print(new) # abc



대소문자 변환(자바)

자바의 경우 string에 대소문자 변환 메소드가 있습니다. 이를 이용합니다.

  1. 대문자 변환

    String s = "abc";
    String new = s.toUpperCase();
    System.out.println(new); // ABC
  2. 소문자 변환

    String s = "ABC";
    String new = s.toLowerCase();
    System.out.println(new); // abc



문제 풀이

처음에는 split을 통해 단어로 나눈다음 2중 for문을 통해 구현하려 했다.
하지만 그렇게 하면 단어 사이에 2개 이상의 공백이 있는 경우 알 수 없다.
그래서 문자를 하나씩 탐색하며 하기로 하였다.

  1. for문으로 모든 문자를 하나씩 탐색합니다.
  2. 문자가 공백이 아닌 경우 idx가 짝수 인지 홀수인지 판단한다.
  3. 홀수인 경우 lower를 이용하여 소문자로, 짝수인 경우 upper를 이용하여 대문자로 변환하여 new 문자에 추가한다. 그리고 idx를 증가시킨다.
  4. 공백인 경우 idx를 0으로 초기화 시킨다. 다음 단어가 시작되기 때문이다. 그리고 공백을 new에 추가한다.


이상한 문자 만들기 파이썬 코드

def solution(s):
    new = ""    # 변경된 새 문자
    idx = 0 # 단어의 index
    # 문자 하나씩 꺼내기
    for c in s:
        # 공백이 아닌 경우 홀수/짝수 idx인지 나누기
        if c != ' ':
            if idx % 2 == 0:
                new += c.upper()
            else:
                new += c.lower()
            idx+=1
        else:
            # 공백인 경우 공백 추가하고 idx 초기화
            new += " "
            idx=0
    return new



이상한 문자 만들기 자바 코드

탐색은 charAt을 이용해 문자로 하거나 substring을 이용해 문자 하나를 뽑아낼 수 있습니다.
그리고 대소문자 변환 메소드는 String에만 있으므로 이를 이용하기 위해 String으로 변환해주어야 합니다.

class Solution {
    public String solution(String s) {
        String ans = "";
        int idx = 0;
        for(int i=0; i<s.length(); i++){
            if( s.charAt(i) != ' '){
                if( idx % 2 == 0)
                    ans += String.valueOf(s.charAt(i)).toUpperCase();
                else
                    ans += String.valueOf(s.charAt(i)).toLowerCase();
                idx++;
            }
            else{
                ans += " ";
                idx = 0;
            } 
        }
        return ans;
    }
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.