Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • visionOS
    • iOS
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 모듈화
  • CS
  • AVAudioSession
  • MVC
  • AutoLayout
  • swift
  • Optional
  • 소프트웨어공학
  • ImageResource
  • 백준
  • 부스트캠프
  • Animation
  • 알고리즘
  • ios
  • Concurrency
  • 티스토리챌린지
  • boj
  • guard
  • 소프트웨어 공학
  • SwiftUI
  • image
  • Swift5.7
  • 소프트웨어 테스트
  • Python
  • Git
  • if let
  • jekyll
  • avaudiosessionportdescription
  • constraint
  • 오블완

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
[프로그래머스] PRG-JadenCase 문자열 만들기
알고리즘

[프로그래머스] PRG-JadenCase 문자열 만들기

2022. 9. 19. 19:36

# PRG-JadenCase 문자열 만들기

문제 정리

 

풀이

func solution(_ s:String) -> String {
    let s = s.components(separatedBy: " ")
    var words: [[Character]] = []
    var upperWords: [[Character]] = []
    var upperSentences = ""
    
    // 전체 소문자로 변경
    // [String] -> [[Character]] 로 변경
    s.map { $0.lowercased() }.forEach { words.append(Array($0)) }

    // 첫 글자만 대문자로 변경
    words.forEach { word in
        var upperWord: [Character] = []
        for i in 0..<word.count {
            if i == 0 {
                upperWord.append(contentsOf: word[i].uppercased())
            } else {
                upperWord.append(word[i])
            }
        }
        upperWords.append(upperWord)
    }
  
    // 문자 합치기
    upperWords.forEach { word in
        upperSentences.append(String(word))
        upperSentences.append(" ")
    }
    upperSentences.removeLast()
    
    return upperSentences
}

 

공백이 어디에 있을 지 모르는 문장이 입력이 들어오는데, 공백은 건드리지 말고 단어마다 첫글자만 대문자로 바꿔줘야 하는 문제였다.

생각한 방법은

 

1. 모두 소문자로 변경

2. substring을 위해 [String] -> [[Character]] 로 변경

3. 반복문으로 돌며 단어마다 첫글자만 대문자로 변경

4. 첫글자가 대문자로 변경된 단어들을 다시 합침

5. 4에서 생긴 마지막 공백 제거

 

문제없이 정상적으로 올 패스 하는 듯 했으나, 테스트 15만 실패..

나에게 원하는게 뭐야

다른 사람들 풀이를 보니 다들 테스트 케이스때문에 고생하는 듯 했다. 공백으로만 가득 찬 케이스, 첫글자가 공백인 경우 등 공백 관련 설명이 너무 부족한 문제였던 것 같다. 

 

원한다 나는 테스트 케이스

테스트 케이스를 추가해가며 추리해봤지만 여기서 만족하기로 했다😞

 

풀고나서 알게된 것

항상 문자열 관련 문제는 substring을 어떻게 할지 고민하다가 시간을 많이 날리는 것 같다.

앞으로는 성능 관련 이슈가 없을 것 같다면 일단 [[Character]] 로 바꿔서 풀어봐야겠다.

저작자표시

'알고리즘' 카테고리의 다른 글

[알고리즘] 구간 합, 누적 합(Prefix Sum)  (0) 2024.03.11
[백준] BOJ-14889 스타트와 링크  (0) 2022.11.27
[백준 BOJ] BOJ -2309 일곱 난쟁이  (0) 2022.09.18
[백준 BOJ] BOJ-1018 체스판 다시 칠하기  (0) 2022.09.18
[백준 BOJ] BOJ-8393 합  (0) 2022.09.18
    '알고리즘' 카테고리의 다른 글
    • [알고리즘] 구간 합, 누적 합(Prefix Sum)
    • [백준] BOJ-14889 스타트와 링크
    • [백준 BOJ] BOJ -2309 일곱 난쟁이
    • [백준 BOJ] BOJ-1018 체스판 다시 칠하기
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바