성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 대소문자 바꿔서 출력 - JAVA

와나나나 2023. 7. 2. 13:55
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 1 - (4)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181949

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 |  영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

입력 #1 | aBcDeFg

출력 #1 | AbCdEfG

 


>> 풀이 << 

문자열의 문자 하나하나를 반복문을 이용해 대소문자 판별을 한 후, 대문자를 소문자로, 소문자를 대문자로 바꾸어 새 문자열을 만들어 풀려고 한다. 

 

이를 위해 자바에서 제공하는 메소드를 활용할 것이다. 

  • 대소문자 판별 -> isUpperCase(), isLowerCase()
    • boolean isUpperCase() 는 문자가 대문자일 경우 true를 반환, 그렇지 않을 경우 false를 반환한다. 알파벳이 아닌 것을 넣었을 경우에도 false가 반환된다. 기본적으로 객체를 다루는 메소드이기 때문에 char형이 아닌 Wrapper 클래스 중 하나인 Character 를 이용한다. 
    • boolean isLowerCase() 는 문자가 소문자일 경우 true를, 그렇지 않을 경우 false를 반환한다. 마찬가지로 알파벳이 아닌 것을 넣었을 경우에도 false가 반환된다. 
      • Wrapper클래스는 자바의 기본 타입을 객체화 한 것을 의미한다. 
기본타입 byte short int long char float double boolean
Wrapper클래스 Byte Short Integer Long Character Float Double Boolean
  • 문자열을 char형 배열로 바꾸기 -> toCharArray()
    • toCharArray() 는 문자열을 한 글자씩 쪼개서 char타입의 배열에 넣어주는 메소드이다. 
      •  이걸 for문에 이용할 예정이다.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String res = "";
        
        for (Character c : a.toCharArray()) {
            if (Character.isUpperCase(c)) {
                res += (char)(c+32);
            }
            else if (Character.isLowerCase(c)) {
                res += (char)(c-32);
            }
        }
        
        System.out.print(res);
        
    }
}

대문자면 아스키코드를 이용해 소문자로 바꾸고, 소문자면 아스키코드를 이용해 대문자로 바꾸었다.