본문 바로가기

백준 알고리즘

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

반응형

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

 

2744번: 대소문자 바꾸기

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

www.acmicpc.net

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (Character.isUpperCase(c)) {
                sb.append(Character.toLowerCase(c));
            } else {
                sb.append(Character.toUpperCase(c));
            }
        }
        System.out.print(sb);
    }
}

 

Character 클래스에 있는 toLowCase(), toUpperCase() 메서드를 사용하는 방법이다.

String형의 문자열을 입력받고, for loop를 사용하여 문자열을 뜯어 본다.

isLowerCase()는 소문자를 뜻하고, isUpperCase()는 대문자를 뜻한다.

if문을 사용하여 소문자는 대문자로, 대문자는 소문자로 바꿔주면 된다.

 

import java.util.Scanner;

public class a2744 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();

    char[] arr;
    arr = str.toCharArray();

    for(int i = 0; i < arr.length; i++) {
      if(65 <= arr[i] && arr[i] <= 90) {
        arr[i] = (char) (arr[i] + 32);
        continue;
      }
      if(97 <= arr[i] && arr[i] <= 122) {
        arr[i] = (char) (arr[i] - 32);
        continue;
      }
    }
    System.out.println(arr);
  }
}

두 번째 방법은 아스키 코드를 이용하는 것이다.

A는 65, Z는 90, a는 97, z는 122이다.

65~90은 대문자, 97~122는 소문자이다.

 

sc.nextLine()으로 문자열을 입력받아 str에 저장하고,

char[] arr; 을 사용해 arr 배열의 타입을 char 문자열로 바꾼다.

toCharArray() 는 문자열을 하나씩 뜯어 arr에 char 배열의 형태인 단일 문자들로 저장한다.

 

반응형