본문 바로가기
IT/알고리즘(Algorithm)

[JAVA]백준 2744번 문제 풀이

by 공부하는개미 2022. 12. 8.
반응형

# 문제 출제 사이트

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

 

2744번: 대소문자 바꾸기

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

www.acmicpc.net

 

# 문제

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

 

# 입력

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다.

단어의 길이는 최대 100이다.

 

# 출력

첫째 줄에 입력으로 주어진 단어에서 대문자는 소문자로, 소문자는 대문자로 바꾼 단어를 출력한다.

 

 

# 제출한 소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputStr = br.readLine();

        for (int i = 0; i < inputStr.length(); i++ ) {
            int tempInt = inputStr.charAt(i);
            if (tempInt > 90) {
                tempInt -= 32;
                System.out.print((char)tempInt);
            } else {
                tempInt += 32;
                System.out.print((char)tempInt);
            }
        }
    }
}
  • 아스키코드에 대해 알고 있으면 쉽게 풀 수 있는 문제
  • 입력된 문자열의 각 인덱스에 있는 char를 숫자로 변환 후 아스키 코드 값에 맞게 더하기 빼기 연산
  • 연산된 int 자료형 변수를 다시 char 자료형으로 변환 후 출력해준다.

 

 

 

첫 번째 제출한 코드 리팩터링 후

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputStr = br.readLine();

        for (int i = 0; i < inputStr.length(); i++ ) {
            int tempNum = inputStr.charAt(i);
            tempNum = tempNum > 90 ? tempNum - 32 : tempNum + 32;
            System.out.print((char)tempNum);
        }
    }
}
  • if else 대신에 3항 연산자 사용
반응형