본문 바로가기
공부/코딩테스트

프로그래머스/C# - 가운데 글자 가져오기

by 잰쟁 2024. 6. 11.
728x90

 

 

문제 설명

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

 

 

제한 사항

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

 

입출력 예

 

 

풀이

 

1. 배열로 풀기

using System;
public class Solution {
    public string solution(string s) {
        string answer = "";
        char[] str = s.ToCharArray();
        if(str.Length%2 == 0)
        {
            answer = str[str.Length/2 -1].ToString()+str[str.Length/2].ToString();
        }
        else
        {
            answer = str[(str.Length-1)/2].ToString();
        }
        return answer;
    }
}

 

: 조금 복잡하게 풀었다..

우선 string 문자열을 문자로 바꾸기 위해 ToCharArray()를 이용하여 문자 배열로 만들어주었다.

그 후 문자 배열이 짝수이면 배열의 길이의 반 번째의 값과 반 번째 바로 앞 갚을 붙여 반환하였고,

문자 배열이 홀수이면 배열의 길이에서 1을 뺀 값의 반 번째에 있는 값을 반환해주었다.

 


 

2. Substring( )으로 풀기

using System;
public class Solution {
    public string solution(string s) {
        string answer = "";
        int a = s.Length/2;
        if(s.Length%2 == 0)
        {
            answer = s.Substring(a-1,2);
        }
        else
        {
            answer = s.Substring(a,1);
        }
        return answer;
    }
}

 

: 이게 훨씬 간단하다!

우선 int a에 문자열 a의 길이의 반을 값으로 넣어준다. (int는 소수점이하는 버림)

문자열 s의 길이를 반으로 나눈 나머지가 0이면(짝수) 가운데 두 값을 반환해야하므로, substring의 시작값을 a-1로 해주고 두 값을 반환해야하므로 뒤에는 2를 써준다.

나머지가 0이 아닐 경우(홀수) 가운데 값 1개만 반환하면 되므로 substring의 시작값을 a로 해주고 뒤에는 1을 써준다.