위코드 2주차를 마무리하는 의미에서 JS 중간평가가 있었다. 생각보다 간단했던 시험이었지만, 동기들과 코드리뷰를 해보니 논리가 각자 달라서 비교해볼겸 블로깅을 해본다!
console.log(isEven(11)) // --> "짝수가 아닙니다."
console.log(isEven(10)) // --> "짝수 입니다."
function isEven(num) {
if(num % 2 == 0){
return "짝수 입니다."
} else{
return "짝수가 아닙니다."
}
}
해당 문제는 그저 워밍업,,
팁과 세금을 제외한 식사값이 주어졌을때,
calculateTotal 함수는 팁과 세금이 포함된 총 식사값을 반환합니다.
Notes:
세금은 9.5% 팁은 15% 로 계산하세요.
팁을 계산할때 세금을 포함하여 계산하지 마세요.
console.log(calculateTotal(20)); // --> 24.9
function calculateTotal(amount) {
return amount * ( 1+ 0.095 + 0.15)
}
내 동기들 중엔 변수를 선언해서 식을 완성한 경우도 있었다.
나는 그냥 귀찮아서 간단하게 만들었당,,;;;
console.log(getPrefix('BTC-KRW')) // --> BTC
function getPrefix(str) {
const string = str.split("-");
return string[0]
}
해당 문제는 특정 문자를 기준으로 문자열을 잘라 배열로 반환 후, 첫번째 요소를 리턴하는 문제이다.
split 메서드로 간단하게 해결할 수 있었다.
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서
주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다.
만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다.
만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.
const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2
function getFind(filter, sentence) {
return result = sentence.search(filter);
}
구글링으로 찾은 search메서드! 동기들한테 알려주자 모두 배신감을 느껴했다고 한다...(나 포함;;)
그런데 이 문제는 for문으로도 풀 수 있다(이 방법이 아마 출제의도와 더 상관이 있을 것 같다.)
function getFind(filter, sentence) {
// 아래 코드를 작성해주세요.
let stringtoArray = sentence.split('');
for (i=0; i<stringtoArray.length; i++) {
if( stringtoArray[i] === filter) {
return i
}
}
if (stringtoArray[i] !== filter) {
return -1
}
}
주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.
console.log(find_longest_word(["PHP", "Exercises", "Backend"]))
// --> "Exercises"
function find_longest_word(arr) {
let maxLength = arr[0].length
for (let i in arr){
if (arr[i].length > maxLength){
maxLength = arr[i].length;
return arr[i];
}
}
}
임시의 문자열길이를 변수에 담아준다는 아이디어만 있다면 쉽게 풀 수 있는 문제이다!
이전에 레플릿에서 풀었던 문제와 유사해서 쉽게 풀 수 있었다.
...는데 지수님이 오류를 발견해주셨다. 리턴문이 for문 안에 있어서 for문을 돌다가 배열의 이전 요소보다 다음 요소가 길이가 더 길면 바로 길이가 더 긴 요소를 리턴하는 것! 게다가 변수를 선언할때 length를 줘버리면 심각한 오류가 생긴다. 따라서 아래와 같이 return문은 for문 밖으로 빼고, length는 빼버리는 게 맞다.
바로 아래와 같이!
let maxLength = arr[0];
for (i = 0; i < arr.length; i++){
if(arr[i].length > maxLength.length){
maxLength = arr[i];
}
}
return maxLength;
}
이제껏 훈련해온 강도가 저세상이어서 그런지 이번 시험은 비교적 쉽게 풀 수 있었다.
그래도 동기들과 답변을 비교하며 공부하니 경각심도 들고 내 위치와 논리구조를 파악할 수 있는 좋은 기회였다! 재밌었다😎😎