본문 바로가기

카테고리 없음

알고리즘 문제 | 프로그래머스 - 가운데 글자 가져오기

반응형

문제

 

단어 s의 가운데 글자를 반환해야 돼!

 

예를들어 abcd면 bc를 반환하고

abcde면 c를 반환!

 

일단 substring()을 써야할 것 같은 느낌적인 느낌이 있고

 

예로 든 abcde로 가정했을 때

5글자니까

3번째 글자 c가 나와야 하지?

 

그럼 s.length / 2 하면 2.5인데 floor해서 내려주고 +1 해주면 3이잔아?

만약 9글자라고 했을 때도 9/2하면 4.5 내림에 +1 해주면 5!

 

※ 내림 말고 parseInt도 있다~

 

 

그럼 짝수면 ? 가운데 두글자만 반환해야 돼!

abcd라고 가정했을 때

4글자인데 bc를 뽑아야 하니까 s.length / 2 는 2

따라서 2랑 2+1하면 되겠지 ..? 12글자도 비교해보자

 

12글자라면 abcdefghijkl 니까

al bk cj di eh fg

67이 반환 돼야 해

그럼 s.length/2 는 6

따라서 6이랑 6+1이니까 오케이!!

 

바로 고고!!

 

function solution(s) {
    var answer = '';
    let idx = 0;

    for(var i=0; i<s.length; i++) {
        if(s.length % 2 == 0) { // 짝수이면
            idx = (s.length / 2);
            answer = s[idx-1] + s[idx];
        } else {
            idx = parseInt(s.length / 2) + 1;
            answer = s[idx-1];
        }
    }
    return answer;
}

줄여보자 줄여보자!!!

 

오케오케~ 너무 쉬워서 1점 밖에 안준다..

나는 이렇게 열심히 했는데 하...

function solution(s) {
    var answer = '';
    let idx = 0;

	s.length % 2 == 0 ? (
    	idx = (s.length / 2);
        answer = s[idx-1] + s[idx];
    ) : (
    	idx = parseInt(s.length / 2) + 1;
        answer = s[idx-1];
    )
    return answer;
}

 

 

다른 사람 풀이

아니 무슨 1줄 코드 개빡치네..

어떻게 하는거야 증말루다가..

이것도 로직은 똑같!!

 

이 코드처럼 내 코드도 줄여보자면

function solution(s) {
  return s.substring(s.length % 2 == 0 ? parseInt(s.length/2) - 1 : parseInt(s.length/2), parseInt(s.length/2) + 1)
}

와 나도 한줄로 줄였다!!!!!!!!!!!!!!!!!! 왜케길어 만이름니ㅏㅇ르ㅏㅁ니아릔ㅁ을ㅈㄴ리ㅏ늠이른ㅁㅇ르마ㅣㄴㅇ르ㅏ

 

일단 substr, substring을 검색해봤는데 현재 substr은 웹 표준에 맞지 않으니까 substring을 써야 한다!

 

substring()은

str.substring(indexStart[, indexEnd])로 쓸 수 있다!

반응형