[프로그래머스 / Kotlin] 이상한 문자 만들기
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
- 제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
해결 과정
해당 문제는 toUpperCase와 toLowerCase를 사용하면 쉽게 풀 수 있는 문제라고 생각했다. 문제를 풀다 고민한 부분은 제한사항 1인데 해당 문장 자체를 홀수 번째 짝수번째 구분하는 것이 아니라 단어 기준으로 변환을 해야하는 것이다.
이 부분을 해결하기 위해 띄어쓰기를 기준으로 각 단어를 잘라 배열에 저장한 후 반복문을 이용하여 각 단어마다 홀짝을 구분해 대문자, 소문자로 구분하였다.
// 1차 코드 - 띄어쓰기 에러
class Solution {
fun solution(s: String): String {
var worlds = s.split(" ")
var answer = ""
for(i in 0 until worlds.size){
for(j in 0 until worlds[i].length){
if(j % 2 == 0) answer += worlds[i][j].toUpperCase()
else answer += worlds[i][j].toLowerCase()
}
answer += " "
}
return answer
}
}
변환한 단어들을 다시 합칠 때 띄어쓰기를 넣기 위하여 for문의 마지막에 코드를 작성했지만 문장의 마지막에 공백이 들어가는 문제가 발생했다. 변환은 잘 이루어 지지만 문장의 마지막에 불필요한 공백이 들어가 에러가 뜨는 것이다.
이 부분을 최종적으로 수정해 코드를 다시 제출하였다.
내가 푼 코드
class Solution {
fun solution(s: String): String {
var worlds = s.split(" ")
var answer = ""
for(i in 0 until worlds.size){
for(j in 0 until worlds[i].length){
if(j % 2 == 0) answer += worlds[i][j].toUpperCase()
else answer += worlds[i][j].toLowerCase()
}
if(i == worlds.size - 1) break
answer += " "
}
return answer
}
}
후기
다시 한번 다짐! 제한 사항을 잘 읽자.
코드를 제출 하기 전에 머릿 속으로 시뮬레이션을 돌리고 재출 할 것.
실전에선 시뮬레이터를 돌릴 기회가 없을 확률이 높다.
연습 시에는 편하게 재재출하며 코드를 수정하지만 현장에선 그러지 못 할 확률이 높으니 이런 쉬운 실수는 놓치지 말 것
'Android > Algorithm' 카테고리의 다른 글
[프로그래머스 / Kotlin] 문자열 내 마음대로 정렬하기 (0) | 2024.03.20 |
---|---|
[프로그래머스 / Kotlin] 삼총사 (0) | 2024.03.18 |
[프로그래머스 / kotlin] 3진법 뒤집기 (0) | 2024.03.14 |
[프로그래머스 / Kotlin] 직사각형 별찍기 (0) | 2024.03.14 |
[프로그래머스 / Kotlin] 행렬의 덧셈 (0) | 2024.03.14 |