본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 가운데 글자 가져오기 - (JAVA/ 자바)

by pandastic 2025. 3. 29.
반응형

 

 

[처음에 내가 작성한 코드]

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        List<String> list = new ArrayList<>();
        String[] arr = s.split("");
        
        for(int i = 0; i<arr.length; i++){
            list.add(arr[i]);
        }
        System.out.println(list);
        
        for(int j=0; j<list.size(); j++){
           if(s.length() % 2 == 0){
               answer = s.substring(s.length() / 2 - 1, s.length() / 2 + 1);
           }else{
               answer = list.get(list.size() / 2);
           }
        }
        return answer;
    }
}

처음에는 일단 무조건 for문을 돌아야한다고 생각을 해서 ArrayList도 쓰고 String[ ] 배열에 입력된 단어를 split으로 잘라서 넣고 했다.

 

짝수일 경우에 두 글자 반환하는 경우의 코드를

answer = s.substring(s.length() / 2 - 1, s.length() / 2 + 1);

이렇게 짜니 위에 코드들이 불필요하다고 느껴졌다.

 

 

[개선한 코드]

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        
        // 단어의 길이가 짝수
        if(s.length() % 2 == 0){
            answer = s.substring(s.length() / 2 - 1, s.length() / 2 + 1);
        }
        // 단어의 길이가 홀수
        else{ 
            answer = s.substring(s.length() / 2, s.length() / 2 + 1);
        }
        return answer;
    }
}

코드를 간결하게 짤 수 있는 문제였다. 사실 여태 풀었던 다른 코드들도 마찬가지 일 것 같긴 하다.

반응형