알고리즘 : 프로그래머스 : JAVA : 가운데 글자 가져오기

2022. 1. 15. 17:27알고리즘/프로그래머스

반응형

<문제>


<코드 & 설명>

class Solution {
    public String solution(String s) {
        String answer = "";
        
        // 1. 짝수인 경우
        if(s.length() % 2 == 0){
            // 1-1. 문자열 길이/2 와 문자열 길이/2 - 1
            answer+=s.charAt(s.length()/2-1);
            answer+=s.charAt(s.length()/2);
        // 2. 홀수인 경우    
        }else{
            // 2-1. 문자열 길이/2
            answer+=s.charAt(s.length()/2);
        }
        
        return answer;
    }
}

이 문제의 핵심은 홀/짝의 문자열 길이에 따라 출력 형식을 바꿔주면 된다. 홀수일 경우, 문자열의 중앙에 위치한 문자를, 짝수일 경우 문자열 중앙의 두 문자를 반환하면 된다. 

 

입출력 예 1번의 홀수 5 길이의 문자열은 문자로 분리했을 때 인덱스상 중앙에 오는 문자는 2번 인덱스의 문자이고 2번의 짝수 4 길이의 문자열은 인덱스상 1,2번 인덱스의 문자가 해당된다. 즉, 홀수는 문자열 길이/2의 문자를 취하고 짝수는 문자열 길이/2와 (문자열 길이/2) - 1의 문자를 취하면 된다.


<다른 방법>

class Solution {
      public String solution(String s) {
          String answer = "";
          
          //짝수와 홀수인 경우로 나누어서 정리한다! 짝수면 2글자가 나오고 홀수면 1글자가 나올 것이다.
          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;
      }
    }


문자열을 추출하는데는 3가지 방법이 있다. substring, indexOf, charAt.

substring는 substring(int a1) / substring(int a1, int a2)의 방식으로 나뉘는데 첫 번째는 a1부터 끝까지 가져오는 것, 

두번쨰는 a1~a2까지 가져오는 것이다.

indexOf(int n / String str) 은 n이나 str이 있는 인덱스를 반환해주는 함수이다.

마지막으로 charAt(int n)은 n번째 위치의 값을 반환해주는 함수이다. 

이 경우에서는 짝수일 경우 2개가 나와야하므로 substring를 써주는 것이 좋다. 

반응형