[Java] 가운데 글자 가져오기 (programmers)

Haeun Noh·2022년 12월 24일
0

programmers

목록 보기
28/64
post-thumbnail

1224


문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.


제한사항

s는 길이가 1 이상, 100이하인 스트링입니다.


입출력 예

sreturn
"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가 나오는데 배열의 요솟값으로써의 23번째를 뜻하므로 이러한 요솟값의 방에 들어있는 중간값이 answer에 저장되어 return되는 것이다.

만약 s의 길이가 짝수일 경우에도 동일하다. 단, 위의 부분에서는 중간값이 명확하였지만 짝수인 경우 중간에서 왼쪽 오른쪽의 값을 전부 출력해야 한다. 따라서 s.length()/2에서 1을 빼주고 다시 s.length()/2의 방의 값을 더하여 answer에 저장하는 것이다.

문자열에서의 +는 연산의 더한다는 개념이 아니라 문자열끼리 붙인다고 생각해야 한다.

length를 쓰는 게 아니라 length()로 메서드를 사용하느냐면 배열에서는 length를 쓸 수 있지만 s는 문자열이기 때문에 메서드인 length()로 문자열 길이를 알아보는 것이다.


실행 결과



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글