코드스테이츠 수업 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}분 전에 접속함`;
}
}
'CodeStates > JavaScript' 카테고리의 다른 글
Section1 / Unit6 : 웹앱 만들기(계산기 구현하기) (0) | 2023.04.21 |
---|---|
Section1 / Unit5 : JS 반복문 & 함수 (0) | 2023.04.20 |
Section1 / Unit5 : JS (0) | 2023.04.18 |
Section1 / Unit4 : 복습&계산기 목업 만들기 (0) | 2023.04.17 |
Section1 / Unit4 : HTML/CSS활용 (0) | 2023.04.14 |