[JS] CodeSignal 기초 문제(aka. the journey begins)

2021. 5. 2. 18:53개발공부/알고리즘

 

기초문제는 자바스크립트 기본 문법을 공부하는데 좋을 것 같아 풀어보았다.

 

첫번째 문제

두 입력값의 합을 구하는 문제이다.

function add(param1, param2) {
    return param1+param2
}

 

두번째 문제

년도(year)를 입력하면 세기(century)를 반환하는 문제

1세기는 100년

즉, 첫번째 세기가 1년부터 100년이라면,  두번째 세기는 101년부터 200년

function centuryFromYear(year){
        if ((year%100) == 0){ // year가 100으로 나눠떨어지면
            return (year/100) // 100으로 나눈 몫 반환
        } else {
            return (parseInt(year/100) + 1)
        }
}

파이썬 풀때도 많이 이용했던 방법이라 반가(?)웠다ㅎ..ㅎ?

자바스크립트에서도 나머지를 구할땐 %인건 마찬가지구나!

1세기: 1 - 100

2세기: 101 - 200

.

.

5세기: 401 - 500 이니까 

예를들어 432년이라면 

100으로 나누었을때 나머지는 0이아니다(32이다) 그러므로 else문으로 들어간다.

parseInt는 정수형으로 변환할때 사용!

432/100 = 4그리고 나머지 32인데 정수로 변환하여 4 + 1

따라서 432년도는 5세기 정답!

 

세번째 문제

이 문제는 단어가 palindrome인지 아닌지 구분해야한다.

즉, 거꾸로해도, 똑같은 단어로 읽히는지(예: eye, decaf faced ..)

function checkPalindrome(inputString) {
    const len = inputString.length;
    for (let i = 0; len/2 > i; i++) {
        if (inputString[i] == inputString[len - 1 - i]) {
            return true;
        }
        else {
            return false;
        }
    }
    };

처음 시도했던 코드

10개의 샘플 중 2개가 자꾸 틀렸다고 떴다.

function checkPalindrome(inputString) {
    const len = inputString.length;
    const result = true;
    for (let i = 0; len/2 > i; i++) {
        if (inputString[i] == inputString[len - 1 - i]) {
            const result = true;
        }
        else { const result = false;
        }
    }
        
    return result;
    };

그래서 이렇게도 시도해봤지만 이것도 오답🤔

음.. 그런데 내 코드에서 뭔가 아쉬운 점을 발견했다.

다시보니 반복문을 제대로 이해하지 못하고 코드를 짰던듯하다..

 

새롭게 짠 코드는

function checkPalindrome(inputString) {
    const len = inputString.length;
    for (let i = 0; len/2 > i; i++) {
        if (inputString[i] !== inputString[len - 1 - i]) {
            return false;
        }}
    return true;
    };

코드 해설

input받은 단어의 길이를 len으로 정한다.

i=0으로 시작해서 len/2 > i일때까지 i에 1씩추가하면서 반복문을 돈다.

반복문속에선 만약 단어의 i번째 인덱스의 문자가 단어의 뒤에서부터 i번째 문자가 일치하지않는다면 false반환 후 나간다.

그렇지않다면 계속 반복문이 끝날때까지 돈다.

len/2 > i가 더이상 만족하지않아 반복문이 끝나면 return true!!!

 

 

이외에도 다양하게 풀수있는 방법 확인 => 링크