프로그래머스 1단계) 이상한 문자 만들기
2022. 1. 24. 11:48ㆍAlgorithm/알고리즘
728x90
반응형
문제
10:46 - 11:25(40분 고민하고 답을 봄)
접근 방식
1) components(seperatedBy: " ")를 이용해서 띄어쓰기를 기준으로 String type의 배열을 구하고
//solution이라는 함수는 String타입의 s를 파라미터로 받고 있음
var s = s //"abc bcd cK"
var newString = s.components(seperatedBy: " ")//["abc", "bcd", "cK"]
2) 리턴된 배열을 map 고차함수를 이용해서 짝수번째 알파벳은 대문자, 홀수번째 알파벳은 소문자로 리턴하고
//solution이라는 함수는 String타입의 s를 파라미터로 받고 있음
var s = s //"abc bcd cK"
var newString = s.components(seperatedBy: " ").map { if $0...(여기서 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꿔야하는데.. 쉽지않네?) }
//["abc", "bcd", "cK"]에서 map을 통해 처리해줘야 한다고 생각했었다.
3) join을 이용해서 배열 안 string요소들을 하나의 string으로 만들어주고
4) 띄어쓰기가 들어갔었던 index 부분에 빈칸을 더해주면 되지않을까.. 생각했었다.
직관적으로 이해가 쉬웠던 답안
https://joycestudios.tistory.com/115
var answer = String()
// sepratedBy 함수를 통하여 공백 기준으로 문자열 배열을 구합니다.
let array = s.components(separatedBy: " ")
for s in array {
for (index, c) in s.enumerated() {
answer.append(Int(index) % 2 == 0 ? c.uppercased() : c.lowercased())
}
// 문자열 변환 완료 후에는 마지막 문자로 공백 입력
answer.append(" ")
}
// 마지막 공백은 필요없으므로 제거
answer.removeLast()
return answer
많이 간추린 답안
import Foundation
func solution(_ s:String) -> String {
let a = s.components(separatedBy: " ").map { $0.enumerated().map { $0.offset % 2 == 0 ? $0.element.uppercased() : $0.element.lowercased() } }
return a.map{ $0.map { $0 }.joined() }.joined(separator: " ")
}
느낀점
아 다행이다! 그래도 map으로 접근해야겠다는 생각까지는 맞았다.
enumerated, offset에 대해서 찾아보고 다시 풀어보기로 한다.
https://sweetdev.tistory.com/313
enumerated를 이용하면 offset과 element로 키와 값을 value화 할 수 있다.
728x90
반응형
'Algorithm > 알고리즘' 카테고리의 다른 글
프로그래머스 1단계) 짝수와 홀수 (0) | 2022.01.24 |
---|---|
프로그래머스 1단계) 자릿수 더하기 (0) | 2021.12.05 |
프로그래머스 1단계) 자연수 뒤집어 배열로 만들기 (0) | 2021.12.05 |
프로그래머스 1단계) 정수 내림차순으로 배치하기 (0) | 2021.12.05 |
프로그래머스 1단계) 정수 제곱근 판별 (0) | 2021.12.03 |