TIL 54 day 코딩테스트 문제풀기

Winney·2021년 1월 1일
0
post-thumbnail

최근 구직을 하면서 코딩테스트가 많다는 것을 새삼 깨닫게 되었다.
코딩테스트... 보기만 해도 자신감이 사라져서 피하고 싶었지만...
피한다고 해결되는 건 없다! 그냥 지나갈 뿐!!
오늘부터라도 최소 한 문제씩 꾸준히 풀어보기로 다짐했다.
아직까지 알고리즘이라고 할만한 건 없지만 프로그래머스 기준 레벨1 문제부터 풀어나가야겠다.

  1. 가운데 문자 반환하기
  2. 주어진 숫자 진법 변환하기

1. 가운데 문자 반환하기

  • 문자의 길이가 홀수면 가운데 글자 한 개 반환
    ex) Input : 'abcde' => Output : 'c'
  • 문자의 길이가 짝수면 가운데 글자 두 개 반환
    ex) Input : 'banana' => Output : 'na'
function solution(s) {
    var answer = '';
    if(s.length % 2 !== 0) {
        const center = Math.floor(s.length/2);
        return answer = s.split('')[center]
    } else {
        const center = s.length/2;
        return answer = s.split('')[center - 1] + s.split('')[center];
    }
    return answer;
}

<내가 생각한 순서>
1. 짝수, 홀수를 구분한다 => if문
2. 길이를 2로 나누자 => 홀수면 x.5, 짝수면 정수로 나누어 질 것
3-1. 홀수는 길이-0.5
3-2. 홀수는 Math.floor를 사용해서 내림을 하자
결과적으로 Math.floor를 사용했다.
4. 짝수는 (길이/2)의 인덱스와 (길이/2-1)의 인덱스를 합치자
5. 해결!

2. 주어진 숫자 진법 변환하기

주어진 숫자를 3진법으로 변환 후 앞과 뒤를 뒤집은 다음 다시 10진법으로 변환

function solution(n) {
    var answer = 0;
    const num = n.toString(3).split('').reverse().join('');
    answer = parseInt(num, 3);
    return answer;
}

이 문제를 풀면서 진법을 어떻게 바꾸는지 몰랐는데 알게 되었다.
원래 toString을 toString()으로만 사용하면서 문자열로 변환하는 용도로만 썼는데 진법표시로 변환 가능하다는 걸 알았다!
mdn 문법에 numObj.toString([radix])와 같이 나와 있으면서 진수를 타나내는 기수 값으로 2와 36사이의 정수가 들어갈 수 있다고 한다.

parseInt의 사용법도 추가적으로 알았는데 두번째 인자로 2와 36 사이의 진수를 넣게되면 해당 진법에서 10진법으로 변환되었다!!! 당연히 숫자로!
mdn의 문법은 Number.parseInt(string,[ radix])이다.

역시... 사람은 배워야한다.
둘 다 이미 사용하던 메소드지만 제대로 알지 못 했다라는 생각을 다시금 하게된다.


결과적으로 둘 다 50/50이 나왔지만 프로그래머스를 처음 사용해봐서 이게 무슨 의미인지 모르겠다...
첫 발을 떼었다는 것에 의의를 두고 내일도 문제를 풀어봐야겠다.

profile
프론트엔드 엔지니어

0개의 댓글