조건문

Creating the dots·2021년 6월 20일
0

Javascript

목록 보기
3/24

findShortestOfThreeWords

차례대로 문자열 3개를 입력받아, 가장 짧은 문자열을 리턴해야 합니다.
출력: string 타입을 리턴해야 합니다.
주의: 동일한 길이의 문자열 중에서는 처음 입력받은 문자열을 리턴해야 합니다.

function findShortestOfThreeWords(word1, word2, word3){
  let shortest = word1; //shortest라는 변수를 선언하고 word1을 임의로 할당한다.
  
  if(word1.length>word2.length) //word1가 word2보다 길면, shortest에 word2 재할당 
  {
    shortest = word2;
    
    if(word2.length>word3.length) //word2가 word3보다 길면 shortest에 word3 재할당
    {
      shortest = word3;
    }
    
  }
  
  else if(word1.length>word3.length)
  {
    shortests = word3;
  }
  
  return shortest;
  
}

첫 번째 포인트
가장 짧은 단어를 출력해야하므로, let shortest = word1;으로 할당해놓고, 비교를 통해 shortest에 가장 짧은 단어를 재할당해준다.

두 번째 포인트
동일한 길이의 문자열 중에서는 처음 입력받은 문자열을 리턴해야 하므로 word1.length===word2.length===word3.length인 경우, else if 조건으로 넘어가 shortest = word1을 리턴한다.

areValidCredentials
이름과 비밀번호를 입력받아 이름이 3글자보다 크고 비밀번호가 8글자 이상이면 true를 리턴해야 합니다.

//첫번째 방법
function areValidCredentials(name, password){
  if(name.length>3)
  {
    if(password.length>=8)
    {
      return true;
    }
  }
  return false;
}
  
//두번째 방법
function areValidCredentials(name, password){
  if(name.length>3)
  {
    if(password.length>=8)
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  return false;
}

//세번째 방법
function areValidCredentials(name, password){
  if(name.length>3)
  {
    if(password.length>=8)
    {
      return true;
    }
    else
    {
      return false;
    }
  }
  else
  {
    return false;
  }
}

//네번째 방법
function areValidCredentials(name, password){
  return (name.length>3) && (password.length>=8)
}
    

첫번째 포인트
1~3번째 방법에서 차이는 else를 쓰는지 마는지의 여부이다. 1번 방법은 else를 쓰지 않아도 잘 작동하는데, 그 이유는 name.length>3이지만 passowrd.length>=8은 만족하지 않는 경우와 name.length>3을 만족하지 않는 두 가지 경우 모두 같은 false를 리턴하기 때문에 굳이 따로 else로 구분해주지 않아도 되는 것이다.

두번째 포인트
4번째 방법은 &&연산자를 사용해서 가장 간단하게 표현했다. 두가지 조건을 모두 만족할 경우만 true를 리턴하고 그 외는 모두 false를 리턴한다.

takeLetters
수(num)와 문자열을 입력받아 차례대로 num개의 문자로 구성된 문자열을 리턴해야 합니다.
출력: string 타입을 리턴해야 합니다.
주의: num과 str.length 중 최대값만큼 저장(take)합니다.

function takeLetters(num, str){
  //반복문을 사용한 경우 (리팩토링 전)
  if(str.length===0)
  {
    return str;
  }
  let output = '';
  if(num>str.length)
  {
    for(let i=0;i<str.length;i++)
    {
      output += str[i];
    }
  }
  else
  {
    for(let i=0;i<num;i++)
    {
      output += str[i];
    }
  }
  
  return output;
}  
function takeLetters(num, str){
  //반복문을 사용한 경우 (1차 리팩토링 후)
  let strLength = str.length;
  let repeatNum = num;
  let output = '';
  
  if(strLength === 0)
  {
    return output;
  }
  
  if(num>strLength)
  {
    repeatNum = strLength; 
  }
  
  for(let i=0;i<repeatNum;i++)
  {
    output += str[i];
  }
  
  return output;

}
function takeLetters(num, str){
  //반복문을 사용한 경우 (2차 리팩토링 후)
  let strLength = str.length;
  let output = '';
  
  if(num>strLength || strLength === 0)
  {
    return str;
  }
  
  for(let i=0;i<num;i++) //num<=strLength인 경우
  {
    output += str[i];
  }
  
  return output;

}
function takeLetters(num, str){
 //반복문을 사용하지 않는 경우 --> slice 메소드 사용
  
  return str.slice(0,num); 
  
}

makeLastSeenMsg
사용자의 이름과 미접속 시간(분)을 입력받아 조건별로 다른 메세지를 리턴해야 합니다.
string 타입을 리턴해야 합니다.
미접속 시간이 1시간 보다 적을 경우, 분 단위로 표기합니다.
미접속 시간이 1시간 보다 크고 24시간 보다 적을 경우, 시간 단위로 내림처리하여 표기합니다.
미접속 시간이 24시간 보다 클 경우, 일 단위로 내림처리하여 표기합니다.

function makeLastSeenMsg(name, period){
  
  const day = 60*24; //1일은 1440분
  const hour = 60; //1시간은 60분
  
  if(period>=day)
  {
    return `${name}: ${Math.floor(period/day)}일 전에 접속함`;
  }
  else if(period>=hour)
  {
    return `${name}: ${Math.floor(period/hour)}시간 전에 접속함`;
  }
  else
  {
    `${name}: ${Math.floor(period)분 전에 접속함`;
  }
 
}
profile
어제보다 나은 오늘을 만드는 중

0개의 댓글