오늘 7시간동안 자바스크립트 문제풀이를 하였다.
정말... 어려웠다..!!
: function으로 사용
: 호이스팅 때문에 더 추천하는 방법. 변수(let, const)에다가 이름이 없는(무명) 함수를 할당해두는 것이다.
//함수
function foo() {
return 1+2;
}
foo()
let result = foo();
// 함수의 실행결과를 result에 반환할 수 있다.
console.log(result); //를 하면 3이 반환된다.
//return이란 함수 외부에서 실행했을 때 돌려받는 값이다.
result = result + 4; // 기존 함수의 결과에 4를 추가한다,
console.log(result) // 7
function foo4(x,y,z){
console.log(x,y,z)
}
foo4(1,2)
/* 매개변수의 갯수 > 전달인자의 갯수
-> 아무 것도 할당받지 않은 변수는 undefined*/
foo4(1,2,3,4)
/*전달인자의 갯수 > 매개변수의 갯수
-> 무시된다.*/
function addOneSecond(hour, minute, second) {
//입력 : hour(0~23), minute(0~59), second(0~59)
//출력 : 1초 뒤에 ${timeHour}시 ${timeMinute}분 ${second}초 입니다
let timeMinute = minute
let timeHour = hour
if(second + 1 === 60){
timeMinute = timeMinute + 1;
second = 0;
// 60일 때 timeMinute을 1추가하고 second를 0으로 반환한다.
}else {
second = second + 1;
// second+1이 60이 아니라면 1초를 더 해준다.
};
if (timeMinute === 60){
timeHour = timeHour + 1;
timeMinute = 0;
};
if (timeHour === 24){
timeHour = 0;
};
return `1초 뒤에 ${timeHour}시 ${timeMinute}분 ${second}초 입니다`;
}
나는 timeMinute 부분에서 오류가 났는데 초처럼 minute에도 계속 1을 더해서 생긴 오류였다.
문제를 꼼꼼히 읽고 차분히 풀어야 할 듯 싶다.
- 기준을 하나 만들어 놓고, 차례대로 기준과 비교
- 기준보다 크면 기준을 교체
- 기준보다 크지 않으면 기준 그대로
- 마지막으로 기준을 리턴
숫자가 문자열일 경우 숫자로 변환해줘야 한다. Number(str[0])
//Q. 숫자 문자열을 입력받아 문자열을 구성하는 각 숫자 중 가장 큰 수를 나타내는 숫자를 리턴해야 합니다.
function getMaxNumberFromString(str) {
// TODO: 여기에 코드를 작성합니다.
// 각 숫자 중 가장 큰 수
let result = '0'
for(let i = 0; i <str.length; i++){
if(str[i] > result){
result = str[i]
}
}
return result
}
/* number이 아니고 문자열인데도 비교가 되서 정답처리가 되어 이상하다고 생각하여
크루님께 질문하니 자바스크립트에서 임의로 처리하는 부분이라 꼭 Number타입으로 교체해야 된다고 얘기해주셨다.
고로 옳은 코드는 아래이다.*/
function getMaxNumberFromString(str) {
// TODO: 여기에 코드를 작성합니다.
// 각 숫자 중 가장 큰 수
let result = 0
for(let i = 0; i <str.length; i++){
if(Number(str[i]) > result){
result = Number(str[i]);
}
}
return String(result)
}
소수, 약수, 제곱근을 굉장히 많이 사용하는 것 같으니 꼭 기억해두고 사용해야 할 것 같다.
약수, 소수를 구할 때 반복문의 길이를 줄이기 위해서는 제곱근(Math.sqrt)을 유용하게 사용할 수 있다.
예전엔 이런 수학쯤이야 굉장히 쉽다 생각했는데 코딩에 접목하려니 머리가 복잡해졌다. 자주쓰게 될 기본적인 수학 지식이니 머릿 속에 꽉 채워두는 것이 중요할 것 같다.
앞으로도 꾸준히 문제풀이하며 익혀나가야할 것 같다.
아주 훌륭한 오구군요