반응형
🔍 문제 요약
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 활용에 대해서도 자주 쓰이므로 익숙해져두면 좋을 듯 하다.
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[Lv.2] 기능개발 [프로그래머스_코딩테스트] [큐, 시뮬레이션] [35분] (0) | 2025.06.20 |
---|---|
[Lv.2] 배달 [프로그래머스_코딩테스트] [다익스트라, 그래프] [40분] [Summer/Winter Coding(~2018)] (0) | 2025.06.19 |
[Lv.1] 직사각형 별찍기 [프로그래머스_코딩테스트] [구현, 출력] [10분] (0) | 2025.06.18 |
[Lv.2] 최댓값과 최솟값 [프로그래머스_코딩테스트] [문자열, 수학] [25분] (0) | 2025.06.18 |
[Lv.1] 3진법 뒤집기 [프로그래머스_코딩테스트] [수학, 진법 변환] [20분] (0) | 2025.06.17 |