-
[코딩테스트] - JadenCase 문자열 만들기 LV2 ( 프로그래머스(programmers) / java )👍programmers 2024. 4. 12. 14:37728x90반응형
안녕하세요 나홀로전세집입니다.
니가 그림밥, 내가 스폰지밥! 오늘은 레벨2 짝지어 제거하기 풀어보겠습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12951
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다음은 문제 설명입니다.
문자열을 JadenCase로 만드는게 문제입니다.
JadenCase란 모든 단어의 첫 문자가 대문자이고, 다른 알파벳은 소문자라고 합니다. 첫 문자가 알파벳이 아닐 경우에는 다음 알파벳은 소문자라고 합니다.
i love apple은 I Love Apple 로 변환하면 됩니다.
i have 3apples 은 I Have 3apples 로 변환하면 됩니다.
자바에는 toUpperCase와 toLowerCase 라는 메서드가 있습니다. 이 두 메서드는 문자열을 대문자 또는 소문자로 변환하는 메서드입니다. 이 두 메서드를 사용하여 문제를 풀어봤습니다.
알고리즘을 설명드리겠습니다.
저는 띄어쓰기로 첫 문자를 판별하였습니다. 배열에 문자열의 각 문자를 넣은 후 띄어쓰기가 있으면 다음 문자는 대문자로 바꾸는 방법입니다.
class Solution { public String solution(String s) { String answer = ""; String[] str = new String[s.length()]; for (int i = 0; i < s.length(); i++) { // 배열에 문자열의 문자 넣기 str[i] = String.valueOf(s.charAt(i)); } answer += str[0].toUpperCase(); // 배열의 0번 인덱스를 대문자로 바꿔주기 for (int i = 1; i < s.length(); i++) { if (i == (s.length() - 1)) { // 가장 마지막 문자가 띄어쓰기일 때 런타임 방지 str[i] = (str[i]).toLowerCase(); answer += str[i]; break; } if (str[i].equals(" ")) { // i번째 문자가 띄어쓰기면 i+1번째 문자는 대문자 str[i + 1] = (str[i + 1]).toUpperCase(); } else if (!(str[i - 1].equals(" "))) { // i번째 문자가 띄어쓰기가 아니고 i-1번째 문자가 띄어쓰기가 아닐 때 소문자로 str[i] = (str[i]).toLowerCase(); } answer += str[i]; } return answer; } }
여기서 12번째 줄에 있는 if문이 중요합니다.
" hello " 와 같이 만약 가장 마지막 문자가 띄어쓰기일 때 띄어쓰기 다음 문자가 없어 런타임 오류가 뜨게 됩니다.
그래서 가장 다음과 같은 알고리즘을 사용할 때는 마지막 문자가 띄어쓰기인 것을 체크하여 문제를 풀어야합니다.
오늘도 즐코딩 하시고 좋은 하루 되세요~
전체코드
class Solution { public String solution(String s) { String answer = ""; String[] str = new String[s.length()]; for (int i = 0; i < s.length(); i++) { // 배열에 문자열의 문자 넣기 str[i] = String.valueOf(s.charAt(i)); } answer += str[0].toUpperCase(); // 배열의 0번 인덱스를 대문자로 바꿔주기 for (int i = 1; i < s.length(); i++) { if (i == (s.length() - 1)) { // 가장 마지막 문자가 띄어쓰기일 때 런타임 방지 str[i] = (str[i]).toLowerCase(); answer += str[i]; break; } if (str[i].equals(" ")) { // i번째 문자가 띄어쓰기면 i+1번째 문자는 대문자 str[i + 1] = (str[i + 1]).toUpperCase(); } else if (!(str[i - 1].equals(" "))) { // i번째 문자가 띄어쓰기가 아니고 i-1번째 문자가 띄어쓰기가 아닐 때 소문자로 str[i] = (str[i]).toLowerCase(); } answer += str[i]; } return answer; } }
728x90반응형'programmers' 카테고리의 다른 글
[코딩테스트] - 숫자의 표현 LV2 ( 프로그래머스(programmers) / java )👍 (1) 2024.04.23 [코딩테스트] - 피보나치 수 LV2 ( 프로그래머스(programmers) / java )👍 (1) 2024.04.11 [코딩테스트] - 짝지어 제거하기 LV2 ( 프로그래머스(programmers) / java )👍 (0) 2024.04.11 [코딩테스트] - 최댓값과 최솟값 LV2 ( 프로그래머스(programmers) / java )👍 (15) 2024.04.04 [코딩테스트] - 다음 큰 숫자 LV2 ( 프로그래머스(programmers) / java )👍 (0) 2024.04.04