본문 바로가기

CodingTest Practice

[인프런] 대소문자 변환

대소문자 변환

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램 작성

 

■ 문제 풀이

1) 입력 설명
- 첫 줄에 문자열이 입력
- 문자열의 길이는 100을 넘지 않는다.
- 문자열은 알파벳으로만 구성

2) 출력
- 첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력

3) 테스트
STuDY -> sTUdy

4) 문제 풀이
- 첫번째 solution은 아스키코드 값을 이용하여 대문자인 경우에는 소문자로, 소문자인 경우에는 대문자로 코드값을 계산하여 변경
- 두번째 solution는 Character 클래스의 isLowerCase()/isUpperCase() 함수를 이용하여 문자열에 포함되어 있는 문자의 대소문자를 판별하였고, toLowerCase()/ toUpperCase() 함수를 이용하여 대문자를 소문자로, 소문자를 대문자로 변경

 

import java.util.Scanner;

public class Converter {

    /**
     *  아스키코드값을 이용
     */
    public String solution(String str) {
        char[] chars = str.toCharArray();
        /**
         * 1. 65<= char <= 90 대문자
         * 2. 97<= char <= 122 소문자
         *
         * 대소문자 사이의 차이 : 32
         */
        for (int i = 0; i < chars.length; i++) {
            // 대문자를 소문자로 변경
            if (65 <= chars[i] && chars[i] <= 90) {
                chars[i] = (char) (chars[i] + 32);
                /**
                 * continue의 경우 현재 조건문에서 빠져나온다.
                 * break문의 경우 현재 반복문에서 빠져나온다.
                 */
                continue;
            }

            /**
             * continue를 하지 않으면 위의 과정에서 대문자가 소문자로 변경되었기 때문에
             * 아래의 조건문을 만족하여 소문자에서 대문자로 변경하는 프로세스가 진행된다.
             */
            // 소문자를 대문자로
            if (97 <= chars[i] && chars[i] <= 122) {
                chars[i] = (char) (chars[i] - 32);
                continue;
            }
        }

        return new String(chars);
    }

    /**
     *  Character 클래스의 메서드를 이용
     */
    public String solution2(String str){
        String answer = "";

        for (char c : str.toCharArray()) {
            if (Character.isLowerCase(c)){
                answer += Character.toUpperCase(c);
            }else {
                answer += Character.toLowerCase(c);
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        Converter converter = new Converter();
        Scanner in = new Scanner(System.in);

        String str = in.next();
        System.out.println(converter.solution(str));
        System.out.println(converter.solution2(str));
    }
}

 

'CodingTest Practice' 카테고리의 다른 글

[인프런] 단어 뒤집기  (0) 2022.03.30
[인프런] 문장 속 단어  (0) 2022.03.29
[인프런] 문자 찾기 - 문자열  (0) 2022.03.28
[프로그래머스] K번째수  (0) 2022.03.28
[프로그래머스] 전화번호 목록  (0) 2022.03.27