공부하기/백준

[Java] 백준 풀기 2744 - 대소문자 바꾸기

XEV 2023. 1. 13. 22:18

자바 백준 2744번

브론즈 5

https://www.acmicpc.net/problem/2744

 

2744번: 대소문자 바꾸기

영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

자바를 연습하다.

toCharArray() 로 주어진 문자들을 리스트에 char 타입으로 입력받는다.

char 타입은 ASCII 코드의 10 진수인 정수로 저장이 되기 때문에 크기 비교를 통해 조건을 준다. (대문자 Z 90 보다 작거나, 소문자 a 97 보다 크거나)

대문자와 소문자는 ASCII 코드 10 진수에서 32 만큼 차이가 있기 때문에 이를 이용하여 연산을하여 대문자 -> 소문자 또는 소문자 -> 대문자 ASCII 변환을 한다.

int 타입의 결과는 casting 을 통해 char 타입으로 변환하여 출력한다.

 

 

 

 

 

코드 보기

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        
        Scanner sc = new Scanner(System.in);
        
        char[] text = sc.next().toCharArray();
        char[] newText = new char[text.length];
        // System.out.println(Arrays.toString(text));
        
        for (int i = 0; i < text.length; i++) {
            if (text[i] <= 90) {                                // 대문자 Z 의 ASCII 코드인 90 을 기준으로 이보다 작은수는 대문자.
                newText[i] = (char)(text[i] + 32);              // ASCII 코드에서 대문자와 소문자는 32 간격 차이를 갖음.
            }
            else if (text[i] >= 97) {                           // 소문자 a 의 ASCII 코드인 97 을 기준으로 이보다 큰수는 소문자.
                newText[i] = (char)(text[i] - 32);              // ASCII 코드에서 대문자와 소문자는 32 간격 차이를 갖음.
            }
        }
        // System.out.println(Arrays.toString(newText));           // TEST PRINT
        
        for (int i = 0; i < newText.length; i++) {
            System.out.print(newText[i]);
        }
    }
}