-
위코드 2주차 중간시험 리뷰프론트엔드 개발자가 될거야./js 2022. 7. 1. 17:25
위코드 1주차로 html,css,js replit 풀고
위코드 2주차로 인스타그램 클론코딩 + 몇가지 js 기능 구현을 했다.
그리고 나의 학습을 스스로 점검하기 위해 중간 시험을 치뤘다.
1시간동안 자바스크립트 5문제를 푸는 형식이었다.
4,5번 문제는 (나는..) 어려웠다.. ^__^
01. isEven
Q. 짝수인지 판별하는 함수 isEven을 작성 주세요.
console.log(isEven(11)) // --> "짝수가 아닙니다." console.log(isEven(10)) // --> "짝수 입니다."
나의 방법
function isEven(num) { // 아래 코드를 입력해주세요. if (num % 2 === 0) { return "짝수 입니다." } else { return "짝수가 아닙니다." } }
다른 방법
if문이랑 구조만 다르지만
삼항 연산자로 풀어서 가독성 높이고 더 간단하게 하는 방법이다.
function isEven(num) { return (num % 2 === 0) ? "짝수 입니다." : "짝수가 아닙니다."; }
02. calculateTotal
Q. calculateTotal 함수를 작성하세요.
팁과 세금을 제외한 식사값이 주어졌을때, calculateTotal 함수는 팁과 세금이 포함된 총 식사값을 반환합니다.
Notes:
- 세금은 9.5% 팁은 15% 로 계산하세요.
- 팁을 계산할때 세금을 포함하여 계산하지 마세요.
console.log(calculateTotal(20)); // --> 24.9
나의 방법
function calculateTotal(amount) { let a = amount * 0.095 let b = amount * 0.15 return amount + a + b }
이거는 설명할 것이 따로 없다!
03. getPrefix
Q. getPrefix 함수를 작성하세요.
문자열이 주어졌을때, -를 기준으로 앞에 있는 문자열을 반환하세요.
console.log(getPrefix('BTC-KRW')) // --> BTC
나의 방법
function getPrefix(str) { let a = str.split('-') return a[0] }
str을 split메서드를 사용해서 배열로 바꿔준다.
a = [BTC, KRW]가 되고
a배열의 0번째 요소를 뽑으면 정답
04. getFine
getFind 함수를 작성하세요.
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.
const output = getFind('a', 'I am a hacker') console.log(output) // --> 2
나의 방법 (익현님에게 배운..)
function getFind(filter, sentence) { if(sentence.includes(filter)) { for(let i in sentence) { if(sentence[i] === filter) { return Number(i) } } } else { return -1 } }
if(sentence.includes(filter)) 여기까지 쓰고 그 다음에 어떻게 해야할지 감이 안잡혀서 못풀었다.
'I am a hacker'이거를 하나씩 뽑아내고 싶은데 문자열을 하나씩 뽑아내는 방법을 몰랐다.
왜냐하면 for...in문이 배열의 요소랑 객체의 키는 뽑아낸다는 걸 알았지만
문자열의 문자 하나하나까지도 뽑아주는 줄은 몰랐기 때문이다.
(근데.. for(let i in sentence) = for (let i = 0; i < sentence.length; i++)
즉, for..in문 = for문인데 왜 for문으로 풀 생각을 못했는가... 문제를 많이 풀어봐야할 것 같다..!! )
하나 더 배울 수 있었던 시간이었다..!
아무튼 그래서 for..in문으로 'I am a hacker'를 하나하나 해체해 볼 수 있었다!
'I'/' '/'a'/'m' .... 이렇게....
이제 그 뽑아낸 것이 'a'랑 같으면 그에 해당하는 i를 호출하려고 하니
문자열이라고 해서 Number(i)로 숫자로 바꿔주었다.
다른 방법
function getFind(filter, sentence) { let answer = sentence.search(filter) return answer }
search 메서드를 사용하는 방법이다.
근데 search메서드도 indexOf처럼 일치하는 문자의 위치를 반환해줘서 거의 indexOf랑 같은 메서드다.
이 문제에서 원하는 풀이가 아닐 것 같다!
05. findLongestWord
find_longest_word 함수를 만들어 주세요.
주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.
console.log(find_longest_word(["PHP", "Exercises", "Backend"])) // --> "Exercises"
나의 방법
function find_longest_word(arr) { let max = arr[0] //PHP for(let i = 0; i < arr.length; i++) { if(arr[i].length > max.length) { max = arr[i] } } return max }
먼저 let max = arr[0]해서 arr[0]을 가장 긴 단어로 가정해줬다.
그리고 for문을 돌려서 요소의 길이를 비교했다.
그래서 arr[0].length 보다 더 긴 요소가 있으면
max를 재할당해줬다.
이런 알고리즘 문제들을 많이 풀어봐야겠다고 느낀 하루였다.
주말동안 열공해야지
'프론트엔드 개발자가 될거야. > js' 카테고리의 다른 글
[모던 자바스크립트] 템플릿 리터럴, 디스트럭처링 (1) 2023.04.18 [모던 자바스크립트] 함수 기본값 인수 (0) 2023.04.18 [instagram 클론코딩] input 창에 엔터치거나 "게시"누르면 댓글 추가 구현하기 (0) 2022.06.29 [Replit Javascript] 어려웠던 문제 총정리 (0) 2022.06.26 [TIL] Today I Learned : 배열의 반복문 - .forEach() / .map() 차이 (0) 2022.06.24