개발/Java

자바 알고리즘 - 문자열의 가운데 글자 가져오기

냐냐_ 2021. 4. 2. 12:13
String을 파라미터로 받아, 가운데 글자를 반환하자.
짝수는 두 개를 반환하면 된다.

ex)

"abcde" ▶ "c"
"abcd" ▶ "bc"

 

class Solution {
    public String solution(String s) {

        String answer = "";
        
        return answer;
    }
}

 

더 짧고 멋진 코드가 인터넷에 진짜 많다.

substring써서 완전 짧게 한 줄로 조져끝내버린 빛같은 코드 보고 감탄.....

그치만, 내 풀이법을 담는 데 의의를 두기로 :)

더 열심히 해서 나도 멋있게 짜야지. 읏쨔.

 

 

 

 

 

접근 포인트

 

문자열의 길이를 구해 홀짝을 판별하고,

홀짝 여부에 따라 answer를 다르게 세팅하면 될 듯!

 

 

 

 

 

최종 코드

 

class Solution {
    public String solution(String s) {

        String answer = "";
        
        int s_chk = s.length() % 2; // s_chk==1이면 홀수, 0이면 짝수 
        String s_Arr[] = s.split("");
        
        if (s_chk > 0) {
            answer = s_Arr[(s_Arr.length/2)];
        } else {
            answer = s_Arr[(s_Arr.length/2)-1] + s_Arr[s_Arr.length/2];
        }
        
        return answer;
    }
}

 

1) int s_chk 변수를 선언하여, 홀수이면 1, 짝수이면 0값을 부여했다.

2) 문자열을 쪼개어 배열에 담았다. 이건 아래 더보기에 올린 알고리즘 풀이할 때 배웠음!

 

 

 

 

 

 

if else문을 통해서 홀수일 때, 짝수일 때 각각 다른 값을 answer에 넣어주었다.

if문은 아래와 같은 논리로 구현하였음!

 

입력값 문자열의 길이 리턴할 인덱스
1)  abcde 5 (3번째글자)
2)  abcd 4 1, 2  (2, 3번째 글자)

 

위 1) 의 경우에 따라, 홀수 개의 문자열이 입력되면

문자열 길이 / 2 한 값을 리턴하면 된다. (자바에서 5 / 2 = 2니까.)

 

위 2) 의 경우에 따라, 짝수 개의 문자열이 입력되면

문자열 길이 / 2 - 1 한 값 + 문자열 길이 / 2 한 값을 리턴하면 된다.

(4 / 2 = 2인데, 1번과 2번 인덱스를 리턴해야 하니까.)