문제 설명
문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ my_string의 길이 ≤ 1,000 my_string은 영어 대문자와 소문자로만 구성되어 있습니다.
나의 코드
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=0; i<my_string.length(); i++) {
if(Character.isUpperCase(my_string.charAt(i))) {
answer += Character.toLowerCase(my_string.charAt(i));
} else if(Character.isLowerCase(my_string.charAt(i))) {
answer += Character.toUpperCase(my_string.charAt(i));
}
}
return answer;
}
}
다른 사람 코드
class Solution {
public String solution(String s) {
String answer = "";
for(int i=0;i<s.length();i++){
if(s.charAt(i)>=97 && s.charAt(i)<=122){
answer += (char)(s.charAt(i)-32);
} else if(s.charAt(i)>=65 && s.charAt(i)<=90){
answer += (char)(s.charAt(i)+32);
} else {
answer += s.charAt(i);
}
}
return answer;
}
}
아스키코드값을 활용한 풀이
느낀 점
반복문을 돌지 않고 바로 조건문을 통해서 toUpperCase()
와 toLowerCase()
를 사용하면 이미 한 번 바꾼 것도 또 다시 원상태가 된다. 따라서 반복문을 통해 인덱스마다 조건문을 사용하여 변경해주며 해결하였다.