본문 바로가기

Learn/Javascript

조건문 어려운 문제 피드백

convertScoreToGradeWithPlusAndMinus

출력

  • string 타입을 리턴해야 합니다.
  • 각 등급의 최저 점수는 아래와 같습니다. ('F'의 경우 최대 점수를 표기)
  • 90 이상 --> 'A'
  • 80 이상 --> 'B'
  • 70 이상 --> 'C'
  • 60 이상 --> 'D'
  • 60 미만 --> 'F'

주의 사항

  • 만약 주어진 점수가 100을 초과하거나 0 미만인 경우, 문자열 'INVALID SCORE'를 리턴해야 합니다.
  • 각 등급의 최고 점수보다 7점 이하인 경우, 등급과 함께 '-'를 리턴해야 합니다. (단, 93점의 경우에는 A를 리턴해야 합니다.)
  • 각 등급의 최저 점수보다 8점 이상인 경우, 등급과 함께 '+'를 리턴해야 합니다.
  • F+ 와 F- 는 존재하지 않습니다.

입출력 예시

let output = convertScoreToGradeWithPlusAndMinus(91);
console.log(output); // --> 'A-'

내 코드

function convertScoreToGradeWithPlusAndMinus(score) {
  if (100<score || 0>score){       // 앞선 문제와 같이 초과나 미만의 조건 입력
  return 'INVALID SCORE';          // 각 등급의 최고 점수보다 7점 이하인 경우, 
}                                 // 등급과 함께 '-'를 리턴해야 합니다. (단, 93점의 경우에는 A를 리턴해야 합니다.)
if (score >= 90){                 // 각 등급의 최저 점수보다 8점 이상인 경우, 등급과 함께 '+'를 리턴해야 합니다.
 if (score <= 92){                // 일의 자리가 0,1,2 = '-' 추가 8,9 = '+' 추가 하고 싶은데 실력 미달
   return 'A-';
 }else if (score <= 97){
   return 'A';
 }else {
   return 'A+';
 }
}
if (score >= 80){                 
 if (score <= 82){          
   return 'B-';
 }else if (score <= 87){
   return 'B';
 }else {
   return 'B+';
 }
}
if (score >= 70){                
 if (score <= 72){           
   return 'C-';
 }else if (score <= 77){
   return 'C';
 }else {
   return 'C+';
 }
}
if (score >= 60){                
  if (score <= 62){           
   return 'D-';
 }else if (score <= 67){
   return 'D';
 }else {
   return 'D+';
 }
}
if (score <60){
  return 'F';
}
}

// ************ 복습
 

 

findShortestOfThreeWords

출력

  • string 타입을 리턴해야 합니다.

주의 사항

  • 동일한 길이의 문자열 중에서는 처음 입력받은 문자열을 리턴해야 합니다.

입출력 예시

let output = findShortestOfThreeWords('a', 'two', 'three');
console.log(output); // --> 'a'

output = findShortestOfThreeWords('c', 'b', 'a');
console.log(output); // --> 'c'

페어랑 해결 코드

function findShortestOfThreeWords(word1, word2, word3) {
//차례대로 문자열 3개를 입력받아, 가장 짧은 문자열을 리턴해야 합니다.
//string 타입을 리턴해야 합니다.
//동일한 길이의 문자열 중에서는 처음 입력받은 문자열을 리턴해야 합니다. -> 중요
  let short = word1                  // 짧은 문자열을 찾기 위한 조건문작성
  if(word1.length > word2.length){ 
      short = word2;  
    if(word2.length > word3.length)
      short = word3  
  }else{
    if(word1.length > word3.length){
      short = word3;
    }
  }
  return short
}
//  *************** 복습

선생님 해석 본

function findShortestOfThreeWords(word1, word2, word3) {
  // Tip!
  // 컴퓨터에게 가장 짧은거, 가장 긴거, 가장 큰거, 작은거 찾으라고 시키는 방법
  // 기준 하나 만들어 놓고 그 기준과 비교해서, 더 짧으면 교체

  // 가장 짧은 단어를 할당할 변수 하나 선언
  let shortest = word1;

  // word1과 word2를 먼저 비교한다
  // word2의 길이가 word1의 길이보다 짧으면 변수에 word2 할당
  // 더 작을 때만 교체되기 때문에, 길이가 같더라도 먼저 나온 단어가 앞에 있음.
  if (word1.length > word2.length) {
    shortest = word2;
  }

  // word1과 word2를 비교하여 나온 결과와 word3을 비교
  // 더 작을 때만 교체되기 때문에, 길이가 같더라도 먼저 나온 단어가 앞에 있음.
  if (shortest.length > word3.length) {
    shortest = word3;
  }

  return shortest;
}

makeLastSeenMsg

출력

  • string 타입을 리턴해야 합니다.
  • 미접속 시간이 1시간 보다 적을 경우, 분 단위로 표기합니다.
  • 미접속 시간이 1시간 보다 크고 24시간 보다 적을 경우, 시간 단위로 내림처리하여 표기합니다.
  • 미접속 시간이 24시간 보다 클 경우, 일 단위로 내림처리하여 표기합니다.

입출력 예시

let output = makeLastSeenMsg('mike', 40);
console.log(output); // --> 'mike: 40분 전에 접속함'

output = makeLastSeenMsg('mike', 121);
console.log(output); // --> 'mike: 2시간 전에 접속함'

output = makeLastSeenMsg('mike', 2887);
console.log(output); // --> 'mike: 2일 전에 접속함'

페어랑 해결 코드

function makeLastSeenMsg(name, period) {
let hour = 60;                              // 시간을 분으로 할당
let day = 24 * 60;                          // 하루를 분으로 할당

if (period >= day){                                               // 분이 하루보다 클 경우
  return `${name}: ${Math.floor(period/day)}일 전에 접속함`;       // 분/하루 내림을 사용해 리턴    
} else if (hour <= period) {                                       // 분이 시간보다 클 경우
  return `${name}: ${Math.floor(period/hour)}시간 전에 접속함`;    // 분/시간 내림을 사용해 리턴
} else {                                                           // 그 외 분이 시간보다 작을경우
  return `${name}: ${period}분 전에 접속함`;                       // 분으로 리턴
}
}
// ************** 복습 문제부터 다시 이해하려고 노력해보기

선생님 해석 본

function makeLastSeenMsg(name, period) {
  // 미접속 시간이 1시간 보다 적을 경우, 분 단위로 표기합니다.
  // 미접속 시간이 1시간 보다 크고 24시간 보다 적을 경우, 시간 단위로 내림처리하여 표기합니다.
  // 미접속 시간이 24시간 보다 클 경우, 일 단위로 내림처리하여 표기합니다.

  // 1시간
  let hour = 60;
  // 1일
  let day = 60 * 24;

  // 만약 60분보다 작으면
  if (period < hour) {
    // 그냥 몇 분인지 알려준다.
    return `${name}: ${period}분 전에 접속함`;
    // 1시간 이상 24시간 이하일 땐
  } else if (period >= hour && period < day) {
    // period를 1시간으로 나누어 몇 시간인지 알려준다 (소수점 이하 버림 Math.floor())
    return `${name}: ${Math.floor(period / hour)}시간 전에 접속함`;
    // 24시간 이상일 때
  } else if (period > day) {
    // period를 24시간으로 나누어 몇 일인지 알려준다 (소수점 이하 버림 Math.floor())
    return `${name}: ${Math.floor(period/ day)}일 전에 접속함`;
  }
}

'Learn > Javascript' 카테고리의 다른 글

스코프 정리  (0) 2023.01.03
원시 자료형과 참조 자료형 정리  (0) 2023.01.02
객체 정리  (0) 2022.12.31
배열 정리  (0) 2022.12.29
반복문 어려웠던 문제 피드백  (0) 2022.12.20