문제
https://programmers.co.kr/learn/courses/30/lessons/12951
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고
programmers.co.kr
풀이
문자열 + 구현으로 해결할 수 있었다.
우선 split 메서드를 사용하여 공백 단위로 문자열을 잘라주고 str이라는 새로운 배열에 담아주었다.
이후에는 str의 모든 원소들을 탐색하면서 해당 문자열의 첫 번째 문자가 숫자이면 다음 인덱스의 문자를 대문자로 만들어주었고, 그게 아니라면 해당 인덱스에 대응하는 문자를 대문자로 만들어주었다. 이후에는 모든 문자에 대해 소문자로만 만들어주면 된다.
이때 문자열의 문자 교체를 쉽게 하기 위해서 StringBuilder의 setCharAt 메서드를 사용하였다. StringBuilder를 사용하지 않을 것이라면 replace 메서드로 해당 인덱스에 대응하는 문자를 대/소문자로 바꿔주면 된다.
이렇게 대/소문자 교체 작업이 끝나면 해당 문자와 공백을 같이 더해주었는데 여기서 주의할 점이 매개변수로 받은 문자열의 마지막이 공백인지 아닌지에 따라 정답이 다르므로 처음에 flag라는 Boolean형 변수로 이를 판별하여 공백이 없으면 i가 마지막일 때 교체된 문자만 더해주고, 공백이 있다면 교체된 문자 + 공백까지 더할 수 있도록 구현해 주면 문제를 해결할 수 있다.
코드
class Solution {
public String solution(String s) {
String answer = "";
boolean flag = false;
if(s.charAt(s.length() - 1) == ' ') {
flag = true;
}
String[] str = s.split(" ");
for(int i = 0; i < str.length; i++) {
StringBuilder sb = new StringBuilder(str[i]);
for(int j = 0; j < sb.length(); j++) {
if(j == 0) {
if(Character.isDigit(sb.charAt(0))) {
sb.setCharAt(1, Character.toUpperCase(sb.charAt(1)));
} else {
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
}
} else {
sb.setCharAt(j, Character.toLowerCase(sb.charAt(j)));
}
}
if(i == str.length - 1 && flag == false) {
answer += sb;
} else {
answer += sb + " ";
}
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로그래머스 Level2 짝지어 제거하기 Java (0) | 2022.05.30 |
---|---|
[프로그래머스] 프로그래머스 Level3 네트워크 Java (0) | 2022.05.27 |
[프로그래머스] 프로그래머스 Level2 올바른 괄호 Java (0) | 2022.05.26 |
[프로그래머스] 프로그래머스 Level2 소수 찾기 Java (0) | 2022.05.26 |
[프로그래머스] 프로그래머스 Level2 더 맵게 Java (0) | 2022.05.26 |
문제
https://programmers.co.kr/learn/courses/30/lessons/12951
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고
programmers.co.kr
풀이
문자열 + 구현으로 해결할 수 있었다.
우선 split 메서드를 사용하여 공백 단위로 문자열을 잘라주고 str이라는 새로운 배열에 담아주었다.
이후에는 str의 모든 원소들을 탐색하면서 해당 문자열의 첫 번째 문자가 숫자이면 다음 인덱스의 문자를 대문자로 만들어주었고, 그게 아니라면 해당 인덱스에 대응하는 문자를 대문자로 만들어주었다. 이후에는 모든 문자에 대해 소문자로만 만들어주면 된다.
이때 문자열의 문자 교체를 쉽게 하기 위해서 StringBuilder의 setCharAt 메서드를 사용하였다. StringBuilder를 사용하지 않을 것이라면 replace 메서드로 해당 인덱스에 대응하는 문자를 대/소문자로 바꿔주면 된다.
이렇게 대/소문자 교체 작업이 끝나면 해당 문자와 공백을 같이 더해주었는데 여기서 주의할 점이 매개변수로 받은 문자열의 마지막이 공백인지 아닌지에 따라 정답이 다르므로 처음에 flag라는 Boolean형 변수로 이를 판별하여 공백이 없으면 i가 마지막일 때 교체된 문자만 더해주고, 공백이 있다면 교체된 문자 + 공백까지 더할 수 있도록 구현해 주면 문제를 해결할 수 있다.
코드
class Solution {
public String solution(String s) {
String answer = "";
boolean flag = false;
if(s.charAt(s.length() - 1) == ' ') {
flag = true;
}
String[] str = s.split(" ");
for(int i = 0; i < str.length; i++) {
StringBuilder sb = new StringBuilder(str[i]);
for(int j = 0; j < sb.length(); j++) {
if(j == 0) {
if(Character.isDigit(sb.charAt(0))) {
sb.setCharAt(1, Character.toUpperCase(sb.charAt(1)));
} else {
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
}
} else {
sb.setCharAt(j, Character.toLowerCase(sb.charAt(j)));
}
}
if(i == str.length - 1 && flag == false) {
answer += sb;
} else {
answer += sb + " ";
}
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 프로그래머스 Level2 짝지어 제거하기 Java (0) | 2022.05.30 |
---|---|
[프로그래머스] 프로그래머스 Level3 네트워크 Java (0) | 2022.05.27 |
[프로그래머스] 프로그래머스 Level2 올바른 괄호 Java (0) | 2022.05.26 |
[프로그래머스] 프로그래머스 Level2 소수 찾기 Java (0) | 2022.05.26 |
[프로그래머스] 프로그래머스 Level2 더 맵게 Java (0) | 2022.05.26 |