Coding Test/Programmers

[Lv.1] 가운데 글자 가져오기 [프로그래머스_코딩테스트] [문자열] [10분]

whawoo 2025. 6. 19. 15:00
반응형

🔍 문제 요약

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문자열 s가 주어질 때 가운데 단어를 가져오는 문제. (짝수인 경우 2글자)

🧠 나의 접근 방식과 시행착오

약 4분 걸린 문제. 그저 중간의 단어를 구해오는 것인데 조금 차이가 있다면 짝수의 경우 2개의 단어를 가져와야 한다. 그 때 2로 나눈 나머지로 구별을 하고 인덱스는 2로 나눈 몫과 -1인 점을 가져와서 출력.

public class Solution
{
    /// <summary>
    /// 가운데 글자 가져오기
    /// https://school.programmers.co.kr/learn/courses/30/lessons/12903
    /// </summary>
    public string solution(string s)
    {
        int sLen = s.Length;
        int midIdx = sLen / 2;

        // 짝수인 경우 두글자 반환 (Ex. 4 -> 1, 2)
        if (sLen % 2 == 0)
        {
            return $"{s[midIdx - 1]}{s[midIdx]}";
        }
        
        return $"{s[midIdx]}";
    }
}

✅ 풀이 코드

해당 문제 푸는 방법의 대안 중 하나로 Substring을 쓴 방법. 인덱스를 찾는 부분은 큰 차이는 나지 않지만 단어 2개, 1개를 하나의 로직으로 짤 수 있다는 점에서 좀 더 좋아보인다는 생각이 들긴 하다. (다만 직관적인 코드 로직을 보는 점에선 필자의 방향성이 낫다는 느낌)

public string solution(string s)
{
    int len = s.Length;
    int start = (len - 1) / 2;
    int count = len % 2 == 0 ? 2 : 1;
    return s.Substring(start, count);
}

🔄 정리

Substring 활용에 대해서도 자주 쓰이므로 익숙해져두면 좋을 듯 하다.

반응형