프로그래머스 Lv.1 가운데 글자 가져오기 문제.


class Solution {
public String solution(String s) {
String answer = "";
int strLength = s.length();
answer = strLength % 2 != 0
? s.substring(strLength / 2, strLength / 2 +1)
: s.substring(strLength / 2 -1, strLength / 2 +1);
return answer;
}
}
처음 문제를 접했을 때 들었던 생각은 문자열의 길이를 구하고, 홀수 짝수 여부를 판별해 가져올 글자의 범위를 정하면 되겠다는 생각이 들었습니다.
하여 문자열의 길이를 strLength 변수에 담아준 뒤, if()문을 사용해 홀수 짝수 여부를 판별하려 했습니다.
그러나 현재 문제에서 주어진 경우의 수가, 홀수와 짝수 두 가지밖에 없으므로, 삼항연산자를 사용해도 될 것 같다는 생각이 들었습니다.
리턴 함수인 answer를 strLength % 2 != 0 2로 나누었을 때 0이 아니라면(글자의 길이가 홀수라면),
? s.substring(strLength / 2, strLength / 2 +1)
s.substring(strLength / 2,
문자열 길이를 2로 나눈 범위부터
(입 출력 예시의 글자수는 5이므로 / 2 했을 때 2) 즉 index 2부터
strLength / 2 +1)
(index 2 + 1) 즉 index 3 전까지의 글자를 반환해줘.
입 출력 예시의 'abcde'에서 index 2는 c이고, index 3는 d입니다.
따라서 글자의 길이가 홀수인 'abcde'의 경우 c부터 d전까지의 글자를 반환하므로,
가운데 글자인 c를 반환합니다.
: s.substring(strLength / 2 -1, strLength / 2 +1);
글자의 길이가 짝수라면,
s.substring(strLength / 2 -1 문자열의 길이를 반으로 나눈 값의 -1
(입 출력 예시의 글자수는 4이므로 / 2 -1을 했을 때 1) 즉 index 1부터
strLength / 2 +1);
(같은 맥락으로 / 2 + 1을 했을 때 3) 즉 index 3 전까지의 글자를 반환해줘.
입 출력 예시의 'qwer'에서 index 1은 w이고, index 3은 r입니다.
따라서 글자의 길이가 짝수인 'qwer'의 경우 w부터 r전까지의 글자를 반환하므로,
가운데 두 글자인 we를 반환합니다.