본문 바로가기

프로그래머스 코딩(자바)/Level 0

Programmers Level 0 - 대문자와 소문자

728x90

문제 설명

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

 
제한사항
  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 영어 대문자와 소문자로만 구성되어 있습니다.

 

입출력 예
my_string result
"cccCCC" "CCCccc"
"abCdEfghIJ" "ABcDeFGHij"

입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

 

[ 풀이 1 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
    public String solution(String my_string) {
        String answer = "";
        for(char ch : my_string.toCharArray()) {
            if(ch>='a' && ch<='z') {
                answer += (char)(ch-32);
            }else if(ch>='A' && ch<='Z') {
                answer += (char)(ch+32);
            }
        }
        return answer;
    }
}
 

 

1글자씩 반복하며 
대문자이면 +32를 수행하고 소문자이면 -32를 수행한다.

'a' - 32 = 97 - 32 = 65 = 'A'
'A' + 32 = 65 + 32 = 97 = 'a'

문자와 정수를 연산하면 문자의 ASCII코드값으로 변경되어 계산이 이루어 진다.
자바에서 더하기 연산을 하면 결과가 int로 나온다. 다시 문자로 형변환해 주어야 한다.

[ 풀이 2 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
    public String solution(String my_string) {
        String answer = "";
        for (String s : my_string.split("")) {
            if (Character.isLowerCase(s.charAt(0))) {
                answer += Character.toUpperCase(s.charAt(0));
            } else if (Character.isUpperCase(s.charAt(0))) {
                answer += Character.toLowerCase(s.charAt(0));
            }
        }
        return answer;
    }
}
 

 

Character.isLowerCase(문자) : 소문자이면 true 반환
Character.toUpperCase(문자) : 대문자로 반환
Character.toLowerCase(문자) : 소문자로 반환

 

풀이 3  ]

 

1
2
3
4
5
6
7
8
9
10
import java.util.stream.Collectors;
class Solution {
    public String solution(String my_string) {
        return my_string.codePoints()
        .mapToObj(operand -> 
        String.valueOf((char) (Character.isLowerCase(operand) ? operand-32 : operand+32))).
        collect(Collectors.joining());
    }
}
 
 

 

 my_string.codePoints()은 문자열을 IntStream으로 만든다.
 mapToObj를 이용하여 요소를 반복하여 문자이면 대문자로 대문자이면 소문자로 바꿔 String 객체로 만들었다.
 Collectors.joining() 메서드는 Collector 입력 요소를 단일 문자열로 연결합니다.

728x90