본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - 가운데 글자 가져오기(C#)

by jyppro 2023. 8. 2.

가운데 글자 가져오기

오늘은 "가운데 글자 가져오기" 문제를 보겠습니다. 문제를 바로 살펴보겠습니다.

 

문제 설명

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

 

제한 사항

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

 

입출력 예

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

 

시작 코드

public class Solution {
    public string solution(string s) {
        string answer = "";
        return answer;
    }
}

 

나의 풀이

public class Solution {
    public string solution(string s) {
        int num2 = (s.Length + 1) % 2;
        int num1 = (s.Length / 2) - num2;
        return s.Substring(num1, num2 + 1);
    }
}

코드를 살펴보겠습니다. string타입의 s가 주어지며 시작됩니다. int형으로 num1과 2를 각각 선언합니다. num2에는 s의 길이에 1을 더한 값을 2로 나눈 나머지를, num1에는 s의 길이를 2로 나눈 뒤 먼저 만들어준 num2의 값을 뺀 것을 넣어줍니다. 그리고 s에 Substring()을 사용하여 num1에서 num2 + 1 까지의 길이만큼 문자열을 잘라줍니다.

 

이번에 봐야할 것은 num2를 먼저 선언하고 num1을 계산할 때 사용하는 것, Substring()을 사용하는 것입니다.

num의 사용은 직관적으로 보이기 때문에 넘기겠습니다. Substring()은 두 개의 파라미터를 사용하여 범위를 지정하여 문자열을 자르는 방식입니다. 예시를 들어 설명하겠습니다. s에 문자열 "jyp"가 들어왔다고 하면 num2는 (3+1) % 2로 계산되어 0이 됩니다. num1은 (3 / 2) - 0 이기 때문에 1이됩니다. 그렇다면 리턴하게 되는 것은 s.Substring(1, 0+1) 즉 1에서 1까지이기 때문에 "jyp"의 1번 인덱스에 위치한 y가 리턴되게 됩니다. 여기서 헷갈리면 안되는 것은 Substring()의 파라미터는 첫번째는 인덱스, 두번째는 자르는 길이 입니다. 즉 1번 인덱스에서 1만큼의 길이를 자르기 때문에 y 하나만 잘라 리턴하게 되는 것입니다.

 

<NEXT>

오늘은 "가운데 글자 가져오기" 문제를 풀어보았습니다. 다음에는 "수박수박수박수박수박수?" 문제를 다뤄보도록 하겠습니다. 감사합니다.