가운데 글자 가져오기

문제정의


어떤 문자열이 주어졌을 때 문자열의 가운데 문자를 반환하는 문제이다 만약 문자열이 짝수일 경우 가운데 두 글자를 반환한다.

문제풀이


문자열의 사이즈를 구해서 /2를 하는 식으로 가운데 문자를 출력해줘야한다. 짝수인경우와 홀수인 경우를 다르게 해서 구해주면 된다.

전체 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;

public class BringMiddleLetter {

public static void main(String[] args)
{
String s = "power";
String answer = "";
int l = s.length();
if(l%2 == 1)
{
answer = String.valueOf(s.charAt(l/2));
}
else
{
answer = String.valueOf(s.charAt((l/2)-1)) + String.valueOf(s.charAt(l/2));
}
System.out.print(answer);
}

}

문자열이 홀수인 경우 문자열의 길이/2로 구할 수 있다. 짝수의 경우 문자열의 길이/2-1과 문자열의 길이/2로 구할 수 있다.

이 문제의 시간복잡도는 \(O(1)\)이다.

테스트



홀수 길이와 짝수 길이로 분기처리를 하지 않고도 문제를 풀 수 있는 방법이 있었다. substring을 반환하는 함수의 범위를 [(문자열의 길이-1)/2, (문자열의 길이)/2 +1)로 하면 된다.