Algorithm/Java

프로그래머스 - 가운데 글자 가져오기 java

고고마코드 2022. 6. 20. 16:32
반응형
12903번 문제

코딩테스트 연습 - 가운데 글자 가져오기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 가운데 글자 가져오기

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret

programmers.co.kr


풀이

✔ 단어 's'의 길이는 1 이상

✔ 홀수는 가운데 1글자, 짝수는 가운데 2글자

 

  • 풀이1
public String solution(String s) {
	int len = s.length();
	return s.substring((len-1) / 2, (len/2) + 1);
}

String.substring(int beginIndex, int endIndex)

: begin 부터 end-1 사이의 모든 문자를 반환합니다.

즉, "abcd" 의 중앙값인 "bc"를 가져오기 위해서는 s.substring(1, 3) 을 구해야 합니다.

 

begin의 위치만 봤을 때

"abcde" 일 때는 len=5, beginIndex= 2

"abcd" 일 때는 len=4, beginIndex= 1

일반적으로 중앙을 구하는 것처럼 나누기 2를 한다고 봤을 때

"abcde"는 나누어서 2를 가져오는 방법은 5/2, (5-1)/2 가 있다.

"abcd"는 나누어서 1를 가져오는 방법은 (4-1)/2, (4-2)/2 가 있다.

 

그러므로 "abcde" 와 "abcd" 모두를 만족시키는 식은 (len-1) / 2 이다.

"abcde" > (5-1) / 2 = 2(beginIndex)

"abcd" > (4-1) / 2 = 1(beginIndex)

 

end의 위치만 봤을 때

"abcde" 일 때는 len=5, endIndex=3

"abcd" 일 때는 len=4, endIndex=3

 

일반적으로 중앙을 구하는 것처럼 나누기 2를 한다고 봤을 때

"abcde"는 나누어서 3를 가져오는 방법은 (5/2)+1, ((5-1)/2)+1 가 있다.

"abcd"는 나누어서 3를 가져오는 방법은 (4/2)+1 가 있다.

 

그러므로 "abcde"와 "abcd" 모두를 만족시키는 식은 (len/2) + 1 이다.

"abcde" > (5/2) + 1 = 3

"abcd" > (4/2) + 1 = 3

반응형