본문 바로가기
algorithm

[프로그래머스]대문자와 소문자 - java, python

by skysline 2023. 3. 3.
반응형

`대문자와 소문자`

문제 설명

문자열 my_string이 매개변수로 주어질 때,

대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return 하도록 solution 함수를 완성해 주세요.

입출력 예

입출력 예 #1

  • 소문자는 대문자로 대문자는 소문자로 바꾼 "CCCccc"를 return 합니다.

입출력 예 #2

  • 소문자는 대문자로 대문자는 소문자로 바꾼 "ABcDeFGHij"를 return 합니다.

java code

class Solution {
    public StringBuffer solution(String my_string) {
        StringBuffer answer = new StringBuffer();
        for (int i = 0; i < my_string.length(); i++) {
            if (my_string.charAt(i) >='A'&& my_string.charAt(i) <='Z'){
                answer.append(Character.toLowerCase(my_string.charAt(i)));
            }
             else if (my_string.charAt(i) >='a'&& my_string.charAt(i) <='z'){
                answer.append(Character.toUpperCase(my_string.charAt(i)));
            }
        }
        return answer;
    }
}
  • my_string.charAt(i) >='A'&& my_string.charAt(i) <='Z' 
    • my_string의 값이 A보다 크고 Z보다 작으면 즉 대문 자 구별 조건문
  • answer.append(Character.toLowerCase(my_string.charAt(i))); 
    • 소문자로 변환해서 대입
    • else if 문은 위와 반대
  • 코드가 다 반복하면 대문자를 소문자로 소문자를 대문자로 바꿔준다.
  • else if 문은 else로 대체해도 무방하다.
다른 풀이
class Solution {
    public StringBuffer solution(String my_string) {
        StringBuffer answer = new StringBuffer();
        for (int i = 0; i < my_string.length(); i++) {
            char c = my_string.charAt(i);
            if(Character.isLowerCase(c)){
                answer.append(Character.toUpperCase(c));       
            }else if(Character.isUpperCase(c)){
                answer.append(Character.toLowerCase(c));
            }
        }
        return answer;
    }
}
class Solution {
    public StringBuffer solution(String my_string) {
        StringBuffer answer = new StringBuffer();
        for (int i = 0; i < my_string.length(); i++) {
            char c = my_string.charAt(i);
            answer.append(Character.isLowerCase(c) ? Character.toUpperCase(c) : Character.toLowerCase(c));
        }
        return answer;
    }
}

대문자를 소문자로 소문자를 대문자로 만 바꿔주면 되는 간단한 문제이지만

메서드를 사용법을 모른다면 지옥이 될 수 있다...

자바를 할 때는 정말 타입에 대한 신경을 많이 써야 하는 것 같다...

 

python code

def solution(my_string):
    answer = ''
    for i in my_string:
        if i >='A' and i<='Z':
            answer += i.lower()
        else:
            answer += i.upper()
    return answer
다른 풀이
def solution(my_string):
    return my_string.swapcase()

파이썬은 참 간결해서 좋으면서 헷갈림이 더 심한 경우도 있는 것 같다.....

반응형

댓글