CodeStates/JavaScript

Section1 / Unit5 : JS 조건문

yeeendy 2023. 4. 19. 15:15

코드스테이츠 수업 7일차!

 

JS 조건문을 배웠고 조건문 코플릿을 풀어보았다.

어찌저찌 다 풀긴했지만 참조를 활용하여 다른 방식도 익혀보는 게 좋겠다.

 

 

converScoreToGradeWithPlusAndMinus

문제

점수를 입력받아 점수에 해당하는 등급을 리턴해야 합니다.

출력

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

주의 사항

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

입출력 예시


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

나의 풀이 

-> 일일이 세분화하여 점수마다 코드를 쳤다


  
function convertScoreToGradeWithPlusAndMinus(score) {
// TODO: 여기에 코드를 작성합니다.
if(score<=100 && score >= 98){return 'A+';}
if(score<98 && score >=93){return 'A';}
if(score<93 && score >=90){return 'A-';}
if(score<90 && score >= 88){return 'B+';}
if(score<88 && score >=83){return 'B';}
if(score<83 && score >=80){return 'B-';}
if(score<80 && score >= 78){return 'C+';}
if(score<78 && score >=73){return 'C';}
if(score<73 && score >=70){return 'C-';}
if(score<70 && score >= 68){return 'D+';}
if(score<68 && score >= 63){return 'D';}
if(score<63 && score >= 60){return 'D-';}
if(score<60 && score >= 0){return 'F';}
else{return 'INVALID SCORE';}
}

 


 

Reference

-> A, B, C, D, F 구간을 큰 틀로 두고

->score를 10으로 나눈 나머지를 활용하여 +, -를 추가로 붙여 출력되게끔 한 코드

//처음에 참조를 보고 바로 이해되는 코드는 아니었지만 나눠서 분석하다 보니 이해가 되었다.


  
function plusOrMinus(score) {
const extra = score % 10;
if (extra <= 2) {
return '-';
} else if (extra >= 8) {
return '+';
} else {
return '';
}
}
function convertScoreToGradeWithPlusAndMinus(score) {
let grade;
if (score > 100 || score < 0) {
return 'INVALID SCORE';
}
if (score === 100) {
return 'A+';
}
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
} else if (score >= 60) {
grade = 'D';
} else if (score >= 0) {
grade = 'F';
}
if (grade !== 'F') {
grade = grade + plusOrMinus(score);
}
return grade;
}

addOneSecond

문제

시, 분, 초를 입력받아 1초를 더한 결과값을 특정 형태의 메시지로 리턴해야 합니다.

출력

  • string 타입을 리턴해야 합니다.
  • 1초 뒤에 {hour}시 {minute}분 {second}초 입니다 형식으로 리턴해야 합니다.

입출력 예시


  
let output = addOneSecond(14, 17, 59);
console.log(output); // --> '1초 뒤에 14시 18분 0초 입니다'
output = addOneSecond(1, 59, 59);
console.log(output); // --> '1초 뒤에 2시 0분 0초 입니다'
output = addOneSecond(3, 24, 29);
console.log(output); // --> '1초 뒤에 3시 24분 30초가 입니다'
output = addOneSecond(23, 59, 59);
console.log(output); // --> '1초 뒤에 0시 0분 0초 입니다'

나의 풀이

->최대 59분 59초 미만 구간, 59분 미만이지만 59초 구간, 59분 59초 구간, 23시 59분 59초 구간으로 나눴다


  
function addOneSecond(hour, minute, second) {
// TODO: 여기에 코드를 작성합니다.
if(hour < 23 && 0 <= minute && minute < 59 && 0 <= second && second < 59){
return `1초 뒤에 ${hour}${minute}${second+1}초 입니다`;
}else if(hour < 23 && 0 <= minute && minute < 59 && second ===59){
return `1초 뒤에 ${hour}${minute+1}분 0초 입니다`;
}else if(hour < 23 && minute === 59 && second === 59){
return `1초 뒤에 ${hour+1}시 0분 0초 입니다`;
}else if(hour === 23 && minute === 59 && second === 59){
return `1초 뒤에 0시 0분 0초 입니다`;
}
}

Reference

->간단하게 초 구간, 분 구간, 시간 구간을 나눠서 작성하였고

->리턴 값에 최종값이 출력되게 설정했다

//확실히 보기가 편하다


  
function addOneSecond(hour, minute, second) {
if (second === 59) {
minute += 1;
second = 0;
} else {
second += 1;
}
if (minute === 60) {
hour += 1;
minute = 0;
}
if (hour === 24) {
hour = 0;
}
return '1초 뒤에 ' + hour + '시 ' + minute + '분 ' + second + '초 입니다';
}

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) {
// TODO: 여기에 코드를 작성합니다.
let day = Math.floor(period / (60*24));
let hour = Math.floor(period / 60);
let min = period;
if(period >= 24*60){
return `${name}: ${day}일 전에 접속함`;
}else if(period >= 60 && period < 24*60){
return `${name}: ${hour}시간 전에 접속함`;
}else if(period < 60){
return `${name}: ${min}분 전에 접속함`;
}
}

Reference

-> 약간 비슷하지만 다른 작성법


  
function makeLastSeenMsg(name, period) {
// TODO: 여기에 코드를 작성합니다.
const day = 60 * 24;
const hour = 60;
if (period >= day) {
return `${name}: ${Math.floor(period / day)}일 전에 접속함`;
} else if (period >= hour) {
return `${name}: ${Math.floor(period / hour)}시간 전에 접속함`;
} else {
return `${name}: ${period}분 전에 접속함`;
}
}