반응형
250x250
11-28 10:53
Today
Total
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Notice
Recent Posts
Recent Comments
Link
Archives
관리 메뉴

Bill Kim's Life...

[Swift] 프로그래머스 연습 문제(Level 1) : 가운데 글자 가져오기 본문

CS(컴퓨터 과학)/Coding Test

[Swift] 프로그래머스 연습 문제(Level 1) : 가운데 글자 가져오기

billnjoyce 2020. 11. 8. 13:45
728x90
반응형
실제 코딩테스트의 문제를 통하여 알고리즘 분석과 코딩 능력을 향상시킵니다.

 

 

#. 구독 대상

  • 기본 알고리즘을 코딩 테스트 문제를 통하여 학습하고 싶으신 분
  • 취업 및 이직을 준비하고 계신 개발자
  • Swift를 통하여 코딩 테스트 문제를 살펴보고 이해를 하고 싶으신 분
  • 코딩 테스트에 대한 거부감을 없애기 위하여 기초부터 하나씩 공부해보고 싶으신 분
  • 기타 알고리즘과 문제 해결 능력에 대해서 관심이 있는 모든 개발자분
참고 사항

본 코딩 테스트 문제에 대한 설명 및 해결 방안은 최적의 답이 아닐 수 있습니다.

본 강의에서 지향하는 목표는 바로 특정 문제에 대한 최적의 해결 방법을 찾기보다는 특정한 문제에 대해서 충분히 이해할 수 있고 다양한 방법을 통하여 해결하는 방법을 찾고 향상시키는데 그 목적이 있습니다.

좀 더 좋은 알고리즘 및 코드가 있으시다면 언제든지 본 게시물의 댓글을 통해서 제시해주시면 감사하겠습니다.

 

 

 


 

 

 

코딩 테스트 문제

 

먼저 오늘 살펴볼 문제에 대해서 먼저 살펴보겠습니다.

 

programmers.co.kr/learn/courses/30/lessons/12903

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr

 

 

 


 

 

 

문제 설명

 

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

 

 

 

 


 

 

 

제한 조건

 

  • s는 길이가 1 이상, 100이하인 스트링입니다.

 

 

 

 

 

 

 

 


 

 

 

 

입출력 예

s return
abcde c
qwer we

 

 

 

 


 

 

문제 분석

 

오늘 문제는 다소 간단한 문제입니다.

 

입력된 문자열(s)에서 가운데에 속하는 문자를 출력하되 홀수일 경우 1글자 짝수일 경우 가운데 2개에 해당하는 문자를 반환하는 문제입니다.

 

 

 

 


 

 

 

알고리즘

 

위의 내용을 기반으로 하여 본 문제를 해결하기 위한 알고리즘을 살펴보면 아래와 같습니다.

 

  • 가운데 인덱스 숫자를 구합니다.
  • 입력된 문자열(a)이 짝수인지 홀수인지 판단합니다.
  • 홀수일 경우 가운데 인덱스에 해당하는 문자 1개를 반환합니다.
  • 짝수일 경우는 가운데 인덱스로부터 가운데에 속하는 문자 2개를 반환합니다.

 

 

 

 


 

 

 

코드 설명

 

그렇다면 위의 알고리즘에 대해서 하나씩 살펴보면서 코드로 작성을 해보도록 하겠습니다.

 

 

  • 가운데 인덱스 숫자를 구합니다.
// 문자열의 가운데 인덱스
let index = s.count / 2

 

 

  • 입력된 문자열(a)이 짝수인지 홀수인지 판단합니다.

 

 

 

// 문자열의 길이가 짝수인지 체크
let isEven = s.count % 2 == 0

 

 

  • 홀수일 경우 가운데 인덱스에 해당하는 문자 1개를 반환합니다.
  • 짝수일 경우는 가운데 인덱스로부터 가운데에 속하는 문자 2개를 반환합니다.

 

 

 

// 문자열의 길이가 짝수일 경우
if isEven {
   // 짝수일 경우 인덱스(index)-1부터 인덱스까지의 범위의 스트링 반환(2자리)
   let startIndex = s.index(s.startIndex, offsetBy : index-1)
   let endIndex = s.index(s.startIndex, offsetBy : index)
        
   return String(s[startIndex...endIndex])
}
else {
   // 홀수일 경우 인덱스(index)부터 인덱스까지의 범위의 스트링 반환(1자리)
   let startIndex = s.index(s.startIndex, offsetBy : index)
   let endIndex = s.index(s.startIndex, offsetBy : index)
        
   return String(s[startIndex...endIndex])
}

 

 

 

 

위의 코드들을 모두 조합하여 최종 코드를 완성하면 아래와 같습니다.

 

 

최종 코드

func solution(_ s:String) -> String {
    // 문자열의 가운데 인덱스
    let index = s.count / 2
    // 문자열의 길이가 짝수인지 체크
    let isEven = s.count % 2 == 0
    
    // 문자열의 길이가 짝수일 경우
    if isEven {
        // 짝수일 경우 인덱스(index)-1부터 인덱스까지의 범위의 스트링 반환(2자리)
        let startIndex = s.index(s.startIndex, offsetBy : index-1)
        let endIndex = s.index(s.startIndex, offsetBy : index)
        
        return String(s[startIndex...endIndex])
    }
    else {
        // 홀수일 경우 인덱스(index)부터 인덱스까지의 범위의 스트링 반환(1자리)
        let startIndex = s.index(s.startIndex, offsetBy : index)
        let endIndex = s.index(s.startIndex, offsetBy : index)
        
        return String(s[startIndex...endIndex])
    }
}

 

 

 

 


 

 

 

이상으로 오늘 제시한 문제에 대해서 분석 및 코드를 작성해 보았습니다.

 

 

 

감사합니다.

 

 

 

 


[참고 자료(References)]

 

[1] 프로그래머스 - 가운데 글자 가져오기 : programmers.co.kr/learn/courses/30/lessons/12903

728x90
반응형
Comments