단어 s
의 가운데 글자를 반환하는 함수, solution
을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
s
는 길이가 1 이상
, 100이하
인 스트링입니다.
s | return |
---|---|
"abcde" | "c" |
"qwer" | "we" |
class Solution {
public String solution(String s) {
String answer;
String[] arr = s.split("");
if ( s.length()%2 != 0 ) answer = arr[(s.length()-1) / 2];
else answer = arr[s.length()/2-1]+arr[s.length()/2];
return answer;
}
}
또는
class Solution {
public String solution(String s) {
String[] ch = s.split("");
return ( ch.length % 2 == 0 ?
ch[ch.length/2-1]+ch[ch.length/2] :
ch[ch.length/2]);
}
}
첫 번째의 코드를 기준으로 설명합니다.
String answer;
String[] arr = s.split("");
중간 글자를 반환할 변수인 answer
을 선언한다.
주어진 글자 s
를 한 글자씩 저장할 배열인 arr
를 선언 및 생성한다. split()
메서드를 사용하여 s
의 글자를 ""
를 기준으로 나누어 저장한다.
if ( s.length()%2 != 0 ) answer = arr[(s.length()-1) / 2];
else answer = arr[s.length()/2-1]+arr[s.length()/2];
return answer;
만약 s
의 길이가 홀수라면 가운데의 글자를 가져올 것이다.
5글자인 s
가 매개변수로 왔다고 가정을 해보자. 5글자이므로 중간은 3
번째일 것이다. 3
이면 홀수이기 때문에 2
로 나누기 무리가 있어 s
의 문자열 길이에서 1
을 빼어 짝수로 만든 후 2
로 나눈다. 그렇게 되면 2
가 나오는데 배열의 요솟값으로써의 2
는 3
번째를 뜻하므로 이러한 요솟값의 방에 들어있는 중간값이 answer
에 저장되어 return
되는 것이다.
만약 s
의 길이가 짝수일 경우에도 동일하다. 단, 위의 부분에서는 중간값이 명확하였지만 짝수인 경우 중간에서 왼쪽 오른쪽의 값을 전부 출력해야 한다. 따라서 s.length()/2
에서 1
을 빼주고 다시 s.length()/2
의 방의 값을 더하여 answer
에 저장하는 것이다.
문자열에서의 +
는 연산의 더한다는 개념이 아니라 문자열끼리 붙인다고 생각해야 한다.
length
를 쓰는 게 아니라 length()
로 메서드를 사용하느냐면 배열에서는 length
를 쓸 수 있지만 s
는 문자열이기 때문에 메서드인 length()
로 문자열 길이를 알아보는 것이다.