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!!!
이외에도 다양하게 풀수있는 방법 확인 => 링크
'개발공부 > 알고리즘' 카테고리의 다른 글
[JS] 최솟값구하기 (0) | 2021.06.30 |
---|---|
[JS] 삼각형 판별, 연필 개수 (0) | 2021.06.29 |
[파이썬] 백준 1149번 RGB거리 (0) | 2021.05.02 |
[파이썬] 백준 9461 파도반 수열 (0) | 2021.05.02 |
[파이썬] 백준 1037 약수 & 2609 최대공약수와 최소공배수 (0) | 2021.05.02 |