Study/Algorithm

프로그래머스-가운데 글자 가져오기(java)

의미없는 시간은 없다. 2022. 7. 13. 02:38

문제 설명

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

재한사항
  • s는 길이가 1 이상, 100이하인 스트링입니다.
class Solution {
    public String solution(String s) {
        String answer = "";
        
        //문제에서 S는 길이가 1이상 100이하니까 음수와 0의 예외처리를 하지 않음.
        //여기에서 s.length()/2 했을때 5자리 홀수면  2.5가 나와서 이상해보이지만
        //String 클래스에서 length()는 리턴타입이 int로 반환해준다
        //https://docs.oracle.com/javase/8/docs/api/index.html 오라클제공 자바 공식문서 사이트
        //String에서 length의 리턴은 int로 명시되어있다.
        //만약 좀 찝찝하면, int sLength = s.length();로 명시해주는것도 좋은 방법!
        if(s.length()%2 == 0){
            answer = s.substring((s.length()/2)-1,(s.length()/2)+1); //짝수일때 abcd에서 
        }else{
            answer = s.substring((s.length()/2),(s.length()/2)+1);
        }
        return answer;
    }
}

주석에도 적어두었지만 위의 코드가 가능한 이유는 String클래스의 .length()가 리턴타입이 int, 즉 정수타입이라 가능한것이고 조금 찝찝하다 싶으면 int sLength = s.length();로 명시해주면된다.

 

--다른사람 코드

class StringExercise{
    String getMiddle(String word){

        return word.substring((word.length()-1) / 2, word.length()/2 + 1);    
    }
    // 아래는 테스트로 출력해 보기 위한 코드입니다.
    public static void  main(String[] args){
        StringExercise se = new StringExercise();
        System.out.println(se.getMiddle("power"));
    }
}
반응형