[자바 알고리즘 입문]String-2.대소문자 변환

손홍서·2023년 3월 7일
0

Algorithm

목록 보기
3/4

문제


입력받은 문자열을 탐색하면서 대문자일 경우 소문자로 변경하고 소문자일 경우 대문자로 변환하면 된다.

내가 작성한 처음 코드

import java.util.*;

public class Main {
    public String solution(String str) {
        String answer = "";
        
        for(char c : str.toCharArray()){
            answer = Character.isUpperCase(c) ? answer.concat(String.valueOf(Character.toLowerCase(c))) : answer.concat(String.valueOf(Character.toUpperCase(c)));
        }

        return answer;
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        Main T = new Main();
        System.out.print(T.solution(in.next()));
    }
}

삼항연산자를 쓰고싶어 사용했다. 문자를 문자열로 바꾸는 것 때문에 오류가 몇번 났었다.

강의 코드

import java.util.*;

public class Main {
    public String solution(String str) {
        String answer = "";

        for(char c : str.toCharArray()){
            if(c>=65 && c<=90)// 대문자
                answer += (char)(c+32);
            else //소문자
                answer += (char)(c-32);
        }

        return answer;
    }
    public static void main(String[] args){
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        System.out.print(T.solution(in.next()));
    }
}

그냥 문자열 붙여도 됐었는데 왜 굳이 concat을 사용했나 감이 좀 떨어졌던 것 같다. 간단하게 아래코드처럼 생각해도 됐었다.
answer += Character.isUpperCase(c) ? Character.toLowerCase(c) : Character.toUpperCase(c);

그리고 오랜만에 아스키 코드를 접했다.

  • 대문자 ASCII 코드 : 65~90
  • 소문자 ASCII 코드 : 97~122
    소문자에서 32를 빼면 대문자가 된다.
profile
Hello World!!

0개의 댓글