안녕하세요. 이번에는 프로그래머스 이상한 문자 만들기 문제를 풀어보려고 합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12930
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Problem
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
[제한 사항]
○ 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준) 별로 짝/홀수 인덱스를 판단해야 합니다.
○ 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
![](https://blog.kakaocdn.net/dn/btT1Eg/btsBj74DKPa/veNS559LmQ6q2LXKC8OtEk/img.png)
Solution
class Solution {
fun solution(s: String): String {
var answer: String = ""
var list = s.split(" ")
for(i in 0..list.size - 1) {
list[i].mapIndexed { index, c -> if(index % 2 == 0) answer += c.uppercase() else answer += c.lowercase() }
if(i != list.size - 1) {
answer += " "
}
}
return answer
}
}
이번 문제는 공백을 기준으로 짝/홀수 인덱스를 판단해야 되는 이유로 split을 이용해서 공백을 기준으로 나누고 mapIndexed를 사용해서 짝수는 uppercase()로 대문자 홀수는 lowercase()로 소문자를 나타내도록 문제를 풀어보았습니다.
1. 다른 사람 코드
class Solution {
fun solution(s: String): String {
return s.split(" ").joinToString(" ") { word ->
word.mapIndexed { index, char ->
if (index % 2 == 0) char.toUpperCase() else char.toLowerCase()
}
.joinToString("")
}
}
}
저의 코드와 다르게 좀 더 나은 코드가 있는지 학습을 하기 위해서 다른 사람 코드를 가져와보았습니다. 저의 코드와 크게 다르진 않지만 list 원소들을 문자열로 만들어주는 joinToString() 함수를 통해서 문제를 접근하였습니다. for문을 사용 안 해서 좀 더 가독성이 좋아지는 코드 같습니다.
Performance
1. 내가 작성한 코드 | 2. 다른 사람 코드 |
![]() |
![]() |
'프로그래머스 Algorithm' 카테고리의 다른 글
[프로그래머스] 삼총사 Kotlin (0) | 2023.12.07 |
---|---|
[프로그래머스] 크기가 작은 부분 문자열 Kotlin (2) | 2023.12.06 |
[프로그래머스] 3진법 뒤집기 Kotlin (0) | 2023.12.04 |
[프로그래머스] 이진 변환 반복하기 Kotlin (2) | 2023.12.03 |
[프로그래머스] 최대공약수와 최소공배수 Kotlin (0) | 2023.12.02 |