TIL/알고리즘

[JAVA] 프로그래머스 | 181949 대소문자 바꿔서 출력하기

쑤키다요 2025. 4. 4. 11:08

📝 TIL

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

 

 

제한사항

1 ≤ str의 길이 ≤ 20

str은 알파벳으로 이루어진 문자열입니다.

 

입출력 예

입력#1

aBcDeFg

 

출력#1

AbCdEfG

🦔 설계 및 시도

String 문자열 전체에서 비교하는 것은 어려울 거 같아서

for문과 charAt을 이용하여 String 내 문자 하나하나를 비교했다.

 

1. for문 > 해당 문자가 소문자면 대문자로 / 대문자면 소문자로

2. StringBuilder를 이용하여 append

 

❌ 에러

처음에 return하는 줄 알고 return을 썼는데 

/Solution.java:16: error: incompatible types: unexpected return value

라는 에러가 계속 떠서 뭐지? 했더니 main() 메서드 타입이 void여서

println으로 출력 했어야다. 😥😥

메서드 반환 타입을 잘 체크하자!

 

 

🔥 풀이에 사용된 개념

Character 클래스

:  char 타입을 감싸서 다양한 문자 처리 기능을 제공해주는 클래스

 

자바에서 char는 문자 하나를 저장하는 기본형(primitive tpye)이다.

char와 같은 기본형은 메서드를 사용할 수 없다.

따라서 자바에서는 char 값을 객체처럼 다룰 수 있게 Character라는 Wrapper Class를 제공한다!

 

[Character 클래스의 메소드]

- Character.isUpper(char c) : 대문자인지 확인 (true/false)

- isLowerCase(char c) : 소문자인지 확인

- isDigit(char c) : 숫자(0~9)인지 확인

- isLetter(char c) : 문자(az, aZ)인지 확인

- toUpperCase(char c) / toLowerCase(char c) : 대문자, 소문자로 변환

 


 

💡 풀이 소스 코드

 

시간복잡도 : O(n)

공간복잡도 : O(n) / 입력 문자열과 동일한 길이의 StringBuilder

 

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        StringBuilder sb = new StringBuilder();
        
        for(int i=0; i<a.length(); i++){
            if(Character.isLowerCase(a.charAt(i))) 
                sb.append(Character.toUpperCase(a.charAt(i)));
            else sb.append(Character.toLowerCase(a.charAt(i)));
        }
        
        System.out.println(sb.toString());
    }
}

 


🚀 새로 배운 내용

- char는 기본 타입이므로 메서드를 쓸 수 없기에, Character를 사용해야 한다!

 

 


😺  느낀점

- 시작한지 얼마 안됐지만! 벌써 지난 알고리즘 스터디 때 공부한 내용을 활용하기 시작했다

- 꾸준히 해서 성장했으묜..

 

 


*소스 코드는 다음 깃허브에 올라옵니다 - https://github.com/s0ooo0k/Algorithm_Study

 

GitHub - s0ooo0k/Algorithm_Study: Algorithm Study 문제 및 풀이

Algorithm Study 문제 및 풀이. Contribute to s0ooo0k/Algorithm_Study development by creating an account on GitHub.

github.com