자료구조 & 알고리즘/프로그래머스

[al.go] #.12903 - 가운데 글자 가져오기 [프로그래머스]

가운데 글자 가져오기

문제 설명

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

제한 조건

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

입출력 예

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

문제 해결하기

func solution(s string) string

이 문제는 간단하다. 특히나 Go 에서는 슬라이스를 사용할 수 있어서 더욱 간단하다. 문자열의 길이에서 가장 중간에 해당하는 위치를 구하고, 거기에 2로 나뉘어지지 않으면, 해당 인덱스를, 나뉘어 진다면 중간에 있는 두 개를 가져오면 되는데, 코드는 설명할것도 없이 아래와 같다.

func solution(s string) string {
	center := int(math.Floor(float64(len(s))) / 2)

	if len(s)%2 != 0 {
		return string(s[center])
	}
	return s[center-1 : center+1]
}

func TestSolution(t *testing.T) {
	cases := []struct {
		s      string
		expect string
	}{
		{"abcde", "c"},
		{"qwer", "we"},
	}
	for _, c := range cases {
		if r := solution(c.s); r != c.expect {
			t.Errorf("s %#v; got %#v, want %#v", c.s, r, c.expect)
		}
	}
}

더 읽을거리

https://github.com/pronist/al.go/tree/main/programmers/_12903

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