본문 바로가기
백준

[백준] 알고리즘 분류(문자열,JAVA)2744번, 대소문자 바꾸기

by 열정적인 이찬형 2022. 9. 16.

문제 링크

 

2744번: 대소문자 바꾸기

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

www.acmicpc.net


주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

이 문제에 핵심

 

1. 소문자 -> 대문자, 대문자 -> 소문자 알파벳으로 변경하여 결과로 출력합니다.

2. 단어의 길이는 최대 100입니다.

 

알고리즘 진행 순서.

 

1. 입력된 단어를 저장합니다.

 

2. 입력된 단어의 각 글자들을 확인하여 소문자 -> 대문자, 대문자 -> 소문자로 변경합니다.

 

3. 변경된 단어를 결과로 출력합니다.

 

알파벳 변경

 

IDE에서 작성하는 문자들이 0과 1로 구분하여 컴퓨터에 작동됩니다.

String 형태의 알파벳을 적을 때에는 ASCII의 표에 따라 0과 1로 저장이 됩니다.

 

ASCII - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문

ko.wikipedia.org

위 링크에 들어가셔서 표를 확인해보시면

A = 65번을 가르키고 있으며 컴퓨터에서 표현될 때에는 1000001로 받아들입니다.

입력받은 글자가 소문자이면 대문자, 대문자이면 소문자의 형태로 받아드리도록 위 숫자를 변경할 것입니다.

 

ASCII표를 확인해보시면

알파벳 소문자와 대문자의 차이는 32입니다.

 

A(65)일 때 소문자로 변경하기 위해서는 a(97)이 되어야 하기 때문에

'A' + 32 = 97이 되고 char형태로 나타내면 a가 결과적으로 나오게 됩니다.

 

소문자를 대문자로 변경하려면

a(97) -> A(65)

'a' - 32 = 65이 되고 char형태로 나타내면 A가 결과적으로 나오게 됩니다.

 

예제입력 1.

 

1. 입력된 단어를 저장합니다.

 

WrongAnswer

 

 

2. 입력된 단어의 각 글자들을 확인하여 소문자 -> 대문자, 대문자 -> 소문자로 변경합니다.

 

W(대문자) : 'W' + 32 = w

r(소문자) : 'r' - 32 = R

o(소문자) : 'o' - 32 = O

n(소문자) : 'n' - 32 = N

g(소문자) : 'g' - 32 = G

A(대문자) : 'A' + 32 = a

n(소문자) : 'n' - 32 = N

s(소문자) : 's' - 32 = S

w(소문자) : 'w' - 32 = W

e(소문자) : 'e' - 32 = E

r(소문자) : 'r' - 32 = R

 

3. 변경된 단어를 결과로 출력합니다.

 

"wRONGaNSWER"을 결과로 출력합니다.

  • BufferedReader를 사용하여 입력되는 단어를 저장합니다.
  • 입력된 단어를 탐색하여 소문자 -> 대문자, 대문자 -> 소문자로 변경합니다.
  • 변경된 단어를 BufferedWriter 저장하였습니다.
  • BufferedWriter에 저장된 결과값을 출력하였습니다.
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        //입력값을 처리하는 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //결과값을 출력하는 BufferedWriter
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String input = br.readLine();		//입력 단어 저장
        StringBuilder sb = new StringBuilder();		//결과 저장할 StringBuilder
        //입력된 단어 탐색
        for(int i=0;i<input.length();i++){
            char temp = input.charAt(i);
            if(temp >= 65 && temp <=90)		//대문자일 때
                sb.append((char) (temp + 32));	//+32을 진행하여 소문자로 변경
            else		//소문자일 때
                sb.append((char) (temp - 32));	//-32을 진행하여 대문자로 변경
        }
        bw.write(sb.toString());		//변경된 단어 BufferedWriter저장
        bw.flush();		//결과 출력
        bw.close();
        br.close();
    }
}
 

댓글