본문 바로가기

Algorithm/Programmers

Level 0: 문자열 대소문자 바꿔서 출력하기

이 문서의 내용

    문제 설명

    영어 알파벳으로 이루어진 문자열 str이 주어집니다. 

    • 1 ≤ str의 길이 ≤ 20
      • str은 알파벳으로 이루어진 문자열입니다.

    각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

    더보기

    입력#1 예시

    aBcDeFg

    출력#1 예시

    AbCdEfG

    제공되는 기본 코드는 다음과 같습니다.

    import java.util.Scanner;
    
    public class Solution {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String a = sc.next();
        }
    }

    문제 풀이: ASCII 코드를 사용한 풀이

    입력된 문자열 str의 각 문자를 읽어 ASCII 코드에 따라서 처리합니다.

    import java.util.Scanner;
    
    public class Solution {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String a = sc.next();
    		int len = a.length();
    		if (1 > len || 20 < len)
    			return;
    		StringBuilder sb = new StringBuilder();
    		for (int i = 0; i < len; ++i) {
    			if (65 <= a.charAt(i) && 90 >= a.charAt(i))
    				sb.append((char) (a.charAt(i) + 32));
    			else if (97 <= a.charAt(i) && 122 >= a.charAt(i))
    				sb.append((char) (a.charAt(i) - 32));
    		}
    		System.out.println(sb.toString());
    	}
    }
    코드 비고
    Line 12:13 if (65 <= a.charAt(i) && 90 >= a.charAt(i)) Char 데이터가 65 ~ 90 사이에 속하면 알파벳 대문자에 해당합니다.
    (char) (a.charAt(i) + 32) 알파벳 대문자를 ASCII 코드에 따라서 알파벳 소문자로 치환합니다.
    Line 14:15 if (97 <= a.charAt(i) && 122 >= a.charAt(i)) Char 데이터가 97 ~ 122 사이에 속하면 알파벳 대문자에 해당합니다.
    (char) (a.charAt(i) - 32) 알파벳 소문자를 ASCII 코드에 따라서 알파벳 대문자로 치환합니다.
    더보기

    ASCII 코드를 사용한 로직은 프로그래밍 언어와 관계 없이 동일한 로직을 보장합니다.

    문제 풀이: Character 클래스를 사용한 풀이

    Character 클래스를 사용해 로직을 단순화합니다.

    import java.util.Scanner;
    
    public class Solution {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String a = sc.next();
    		if (1 > a.length() || 20 < a.length())
    			return;
    		StringBuilder sb = new StringBuilder();
    		for (Character c : a.toCharArray())
    			if (Character.isUpperCase(c))
    				sb.append(Character.toLowerCase(c));
    			else if (Character.isLowerCase(c))
    				sb.append(Character.toUpperCase(c));
    		System.out.println(sb.toString());
        }
    }
    코드 비고
    Line 10 a.toCharArray() String의 각 문자를 Character로 조회합니다.
    Line 11:12 isUpperCase() Character가 대문자인지 검사합니다.
    toLowerCase() Character를 소문자로 치환합니다.
    Line 13:14 isLowerCase() Character가 소문자인지 검사합니다.
    toUpperCase() Character를 대문자로 치환합니다.