[Study] 프로그래머스 lv.1 가운데 글자 가져오기

ayboori·2023년 6월 14일
0

Java Study

목록 보기
3/34

풀이 로직

  1. 문자열의 길이가 짝수인지 아닌지 체크한다.
  2. 짝수의 경우 문자열 길이 반의 -1, 문자열 길이의 반 번째 값을 가져온다.

    인덱스가 0부터 시작하기 때문이다
    예를 들어 길이가 4라면 0,1,2,3 중 1,2번째 값을 가져와야 한다

  3. 홀수의 경우 문자열 길이의 반 번째의 값을 가져온다.

    length() 의 매개변수는 int 타입이라 문자열 길이의 반을 가져오면 된다..
    예를 들어 길이가 5라면 2.5가 아닌 2번째 값을 가져오게 된다 (0,1,2,3,4,5 중 2)

사용한 함수

스트링변수.length()

Character.toString(변환하고 싶은 char 변수)

내가 작성한 코드

class Solution {
    public String solution(String s) {
        if (s.length() % 2 ==0){ // 짝수일 경우
            return Character.toString(s.charAt(s.length()/2-1)) + Character.toString(s.charAt(s.length()/2));
        }else{            
            return Character.toString(s.charAt(s.length()/2));
            // 길이의 반에 해당하는 문자 1개 리턴
            // 이때 charAt은 char 값이므로 스트링으로 변환
        }
    }
}

테스트 1 〉	통과 (0.03ms, 78.8MB)
테스트 2 〉	통과 (1.69ms, 75.2MB)
테스트 3 〉	통과 (0.03ms, 76MB)
테스트 4 〉	통과 (0.03ms, 76.6MB)
테스트 5 〉	통과 (0.03ms, 74.4MB)
테스트 6 〉	통과 (1.75ms, 72.8MB)
테스트 7 〉	통과 (0.02ms, 71MB)
테스트 8 〉	통과 (1.27ms, 75.3MB)
테스트 9 〉	통과 (0.05ms, 81.9MB)
테스트 10 〉	통과 (0.04ms, 74.5MB)
테스트 11 〉	통과 (0.04ms, 75.2MB)
테스트 12 〉	통과 (0.05ms, 76.4MB)
테스트 13 〉	통과 (1.76ms, 77.8MB)
테스트 14 〉	통과 (1.16ms, 71.8MB)
테스트 15 〉	통과 (1.82ms, 77.2MB)
테스트 16 〉	통과 (1.44ms, 77.3MB)

다른 사람이 작성한 코드

substring을 사용하여 조건문이 필요없게 작성한 코드

    String getMiddle(String word){
return word.substring((word.length()-1)/2, word.length()/2 + 1);
    }

? : 를 사용하여 문자열이 비었을 경우까지 체크한 코드

    String getMiddle(String word){

      return word != null ? word.substring((word.length()-1)/2,(word.length()+2)/2) : "";
    }

charArray를 사용하여 char의 배열로 변경하여 푼 코드

    String getMiddle(String word){
        char[] ch = word.toCharArray();
        int len = ch.length;
        StringBuffer str = new StringBuffer();
        if (len % 2 == 0) {
            str.append(ch[(len / 2) - 1]);
            str.append(ch[len / 2]);
        }
        else
            str.append(ch[(len - 1) / 2]);
        return String.valueOf(str);
    }

차이점, 보완점

1) substring 사용

String substring(int beginIndex, int endIndex)

이 함수는 String에서 시작하는 인덱스부터 마지막 인덱스까지의 값을 가져온다.
이때 시작 인덱스 = 마지막 인덱스라면 값을 하나만 리턴한다.

홀수의 경우 s.charAt(s.length()/2-1) = s.charAt(s.length()/2)이 되므로 substring을 사용하면 조건문을 사용할 필요가 없다.

2) 문자열이 비었을 경우를 확인

profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초

0개의 댓글