[코드스테이츠/8DAY] Unit5 - [JavaScript] 기초 // 조건문 반복문

오은비·2023년 2월 22일
0

코드스테이츠

목록 보기
8/18
post-thumbnail

오늘 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을 더해서 생긴 오류였다.
문제를 꼼꼼히 읽고 차분히 풀어야 할 듯 싶다.

가장 큰 수, 가장 긴거, 가장 작은거를 구하는 문제를 풀 때 중요한 것

  1. 기준을 하나 만들어 놓고, 차례대로 기준과 비교
  2. 기준보다 크면 기준을 교체
  3. 기준보다 크지 않으면 기준 그대로
  4. 마지막으로 기준을 리턴

숫자가 문자열일 경우 숫자로 변환해줘야 한다. 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)을 유용하게 사용할 수 있다.

예전엔 이런 수학쯤이야 굉장히 쉽다 생각했는데 코딩에 접목하려니 머리가 복잡해졌다. 자주쓰게 될 기본적인 수학 지식이니 머릿 속에 꽉 채워두는 것이 중요할 것 같다.
앞으로도 꾸준히 문제풀이하며 익혀나가야할 것 같다.

profile
드림오구

1개의 댓글

comment-user-thumbnail
2023년 2월 22일

아주 훌륭한 오구군요

답글 달기