본문 바로가기
알고리즘 스터디/프로그래머스 스킬체크 레벨 1(끝)

[프로그래머스 스킬체크 레벨 1] 가운데 글자 가져오기 문제 풀이 및 설명 - 자바[Java]

by 레일라오리덕 2020. 5. 21.
728x90

https://programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

https://programmers.co.kr/learn/courses/30/lessons/12903

 

문제

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

 

 

제한 사항

  • s는 길이가 1 이상, 100이하인 스트링입니다.

 

 

결괏값 예시

 

s return
"abcde" "c"
"qwer" "we"

 

기본 제공 틀

 

class Solution {
    public String solution(String s) {
        String answer = "";
        return answer;
    }
}

 

풀이 [Java]

 

안녕하세요, 오늘은 가운데 글자 가져오기 문제를 풀이해보도록 하겠습니다.

우선 가운데 글자를 가져오기 위해서 입력받은 s의 길이를 확인해야하는데요.

이는 길이가 홀수로 나눠지는 경우에는 가운데 글자만 출력하면 되지만, 짝수로 나눠지는 경우에는 가운데의 2글자를 출력해야하기 때문입니다.

이를 위해서 if절에서 볼 수 있다시피, 길이를 나눈 나머지 값이 1인 경우에는 가운데 글자만 출력할 수 있도록 코드를 짜보았습니다.

 

[길이가 홀수인 경우]

가운데 값을 찾아내기 위해서는 s라는 문자열의 길이를 나눴을 때 나오는 몫을 구해야하는데요.

예를 들어, 문자열의 길이가 5인 경우에는 2로 나누었을 때의 몫인 2라는 인덱스 값을 출력해야하기 때문입니다.

왜냐하면, 인덱스는 0에서부터 시작하기 때문입니다.

위의 결과값 예시로 아래에 예를 들어보겠습니다.

a  b  c  d  e 

[0][1][2][3][4]

이렇게 있을 때 나와야하는 index값은 2어야하기 때문에 2로 나눈 값의 몫을 구해야합니다.

 

여기서 출력해야할 인덱스 값이 구해졌으므로, substring메소드를 사용하여, index [2]에서 [3]을 출력하라고 설계하였습니다.

아시다시피, substring함수는 (num, num+1)인 경우, num에서부터 num까지말 출력 (num+1포함하지 않음.)하기 때문에 이점 유의하셔야합니다.

 

[길이가 짝수인 경우]

길이가 짝수인 경우에는 위의 홀수인 경우와 동일하지만, 다만, 유의하셔야 할점은, 몫으로 나온 index 값보다 앞에 있는 index부터 출력을 해주어야 한다는 것입니다.

또다시 위의 결과값 예시로 아래에 예를 들어보자면,

q  w  e  r

[0][1][2][3]

이렇게 있을 때 나와야하는 index값은 [1][2] 이기 때문에 해당 s의 길이인 4 나누기 2인 결과값 2보다 1적은 index부터 출력해야하는 것입니다.

여기서도 마찬가지로, substring은 두번재 index값을 출력하지 않으므로, num+1 라고 지정해줘야하는 것을 명심해야합니다.

 

class Solution {
    public String solution(String s) {
        String answer = "";
        int num = s.length()/2;
        if(s.length()%2==1){
            answer = s.substring(num, num+1);
        }else{
            answer = s.substring(num-1, num+1);
        }
        return answer;
    }
}

 

채점 결과 [Java]

 

728x90

댓글