본문 바로가기

Study/Programmers

[Programmers] 프로그래머스 문제풀이 가운데 글자 가져오기

정말 쉬우니 한 번 스스로 풀어보는 것을 권장합니다.
문제는 여기서 풀어볼 수 있습니다.

문제 설명

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

제한사항

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

입출력 예

s return
"abcde" "c"
"qwer" "we"

풀이

단순하게 주어진 문자열에서 가운데에 위치한 문자를 가져오는 문제이다. 문자열의 길이가 홀수라면 가운데 한 글자만, 짝수라면 가운데 두 글자를 가져오면 된다.

Go

func solution(s string) string {
    return s[int(float64(len(s)) / 2 - 0.5):int(float64(len(s)) / 2 + 1)]
}

Python

def solution(str):
    return str[(len(str)-1)//2:len(str)//2+1]

Java

class Solution {
  public String solution(String word) {
      return word.substring((word.length()-1) / 2, word.length()/2 + 1);
  }
}

Kotlin

class Solution {
  fun solution(s: String) =
    with(s) { substring(length / 2 - 1 + (length % 2) .. length / 2) }
}

JavaScript

function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}

C

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

char* solution(const char* s) {
    char* answer = (char*)malloc(1);
    char arr[strlen(s)];
    char arrs[3];
    strcpy(arr, s);
    int k = strlen(s);
    int i = 0, j = 0;
    if(k % 2 == 0) {
        j = k / 2, i = j - 1;
        arrs[0] = arr[i];
        arrs[1] = arr[j];
    } else {
        i = k /2;
        arrs[0] = arr[i];
    }
    strcpy(answer, arrs);
    return answer;
}

C++

#include <string>

using namespace std;

string solution(string s) {
    return s.length()&1 ? s.substr(s.length()*0.5,1) : s.substr(s.length()*0.5-1,2);
}