https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=java
1. 서론
자바로 문자열 문제를 풀어보기 위해 풀었던 문제. 자바는 진짜 문자열 다루기 어렵구나,,, 문자열 문제는 그냥 C++로 도망칠까 싶어지는 문제다 ㅜ
2. 문제 풀이
문제에서의 조건
모든 단어는 첫 문자가 대문자여야 함.
(예외. 단 첫 문자가 숫자인 경우를 제외함)
문자는 공백 문자(' ')를 기준으로 구분.
주어진 문자열을 이 조건에 맞게 고쳐서 return 하는 게 문제이다.
내가 착각했던 포인트: 첫 글자가 숫자인건 맨 앞뿐.이라고 생각해서 그렇게 코드를 짰는데 테케 17번 말고는 다 맞았다. 17번이 틀린다면 이 케이스...
로직:
1. 문자열을 전부 소문자로 만듬
2. 문자열의 맨 앞 단어는 공백 문자로 구분할 수 없기 때문에 숫자인가 아닌가 판별 후 아니면 대문자로 처리
3. 반복문 돌면서 공백 문자의 다음 문자가 숫자가 아닌 문자인 경우에만 대문자로 바꿈
3. 코드 설명
class Solution {
public String solution(String s) {
s = s.toLowerCase();
char[] c = s.toCharArray();
if (!Character.isDigit(c[0]))
c[0] -= ('a' - 'A');
for (int i = 1; i < s.length() - 1; i++) {
if (c[i] == ' ' && c[i + 1] != ' ' && !Character.isDigit(c[i + 1]))
c[i + 1] -= ('a' - 'A');
}
return new String(c);
}
}
toLowerCase()는 String의 모든 문자를 소문자로 바꾸는 함수이다.
toCharArray()는 String을 문자형 배열인 Char[]로 치환해주는 함수이다.
Character 클래스의 함수인 isDisit은 char형 문자가 숫자인지 아닌지 판별해주는 boolean형의 함수이다.
그리고 Char[] 배열을 다시 String으로 바꾸기 위해 String 객체를 새로 만들어서 그 안에 Char[]를 넣어줬다.
쉽지 않다 진짜 ㅎ
'Algorithm' 카테고리의 다른 글
[JAVA] Softeer 소프티어 플레이페어 암호 (0) | 2022.11.05 |
---|---|
[JAVA] 백준 16234 인구이동 (0) | 2022.10.26 |
[JAVA] 백준 20058 마법사 상어와 파이어스톰 (0) | 2022.10.20 |
[JAVA] 백준 14503 로봇 청소기 (1) | 2022.10.13 |
[JAVA] 백준 14890 경사로 & SWEA 4014 활주로 건설 (0) | 2022.10.13 |