📝 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
'TIL > 알고리즘' 카테고리의 다른 글
[JAVA] 백준 | 15819 너의 핸들은 (0) | 2025.04.07 |
---|---|
[JAVA] 프로그래머스 | 181905 문자열 뒤집기 (0) | 2025.04.04 |
[JAVA] 백준 | 3181 줄임말 만들기 (0) | 2025.04.02 |
[JAVA] 백준 | 13235 팰린드롬 (0) | 2025.04.02 |
[JAVA] 프로그래머스 | 12915 문자열 내 마음대로 정렬하기 (0) | 2025.04.02 |