- 문제 7번
문제:
시, 분, 초를 입력받아 1초를 더한 결과값을 특정 형태의 메시지로 리턴해야 합니다.
조건:
string 타입을 리턴해야 합니다.
1초 뒤에 {hour}시 {minute}분 {second}초 입니다 형식으로 리턴해야 합니다.
내 답
function addOneSecond(hour, minute, second) {
// TODO: 여기에 코드를 작성합니다.
if (hour === 23 && minute === 59 && second === 59) {
return `1초 뒤에 0시 0분 0초 입니다`
} else if (minute === 59 && second === 59) {
return `1초 뒤에 ${hour+1}시 0분 0초 입니다`
} else if (second === 59) {
return `1초 뒤에 ${hour}시 ${minute+1}분 0초 입니다`
} else {
return `1초 뒤에 ${hour}시 ${minute}분 ${second+1}초 입니다`
}
}
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 + '초 입니다';
}
후기 :
백틱 이용한 템플릿 리터럴 써먹을 때 재미있었다. 사실 ${second+1} 이란 게 되나? 갸우뚱 하면서 했는데 얼렁뚱땅 된 느낌. 리퍼런스를 보니 내꺼보다 훨씬 직관적이고 다른 사람들이 손보기에도 더 좋을거 같다? 이런 생각이 들었다. 내 경우엔 그냥 문제풀이만 하느라 조건문도 얼렁뚱땅이다. 왕초보 라이브 세션도 듣긴 했지만 어떻게 조건문을 짜야 효율적이고 간결해보일까?에 대한 답을 모르겠다.
- 문제 6번
문제:
점수를 입력받아 점수에 해당하는 등급을 리턴해야 합니다.
조건:
string 타입을 리턴해야 합니다.
각 등급의 최저 점수는 아래와 같습니다. ('F'의 경우 최대 점수를 표기)
90 이상 --> 'A'
80 이상 --> 'B'
70 이상 --> 'C'
60 이상 --> 'D'
60 미만 --> 'F'
주의사항:
만약 주어진 점수가 100을 초과하거나 0 미만인 경우, 문자열 'INVALID SCORE'를 리턴해야 합니다.
각 등급의 최고 점수보다 7점 이하인 경우, 등급과 함께 '-'를 리턴해야 합니다. (단, 93점의 경우에는 A를 리턴해야 합니다.)
각 등급의 최저 점수보다 8점 이상인 경우, 등급과 함께 '+'를 리턴해야 합니다.
F+ 와 F- 는 존재하지 않습니다.
내 답
function convertScoreToGradeWithPlusAndMinus(score) {
// TODO: 여기에 코드를 작성합니다.
function plusAndMinus(score) {
if((score % 10) >= 8) {
return '+'
} else if((score % 10) <= 3) {
return '-'
} else {
return ''
}
}
if ( score > 100 || score < 0) {
return 'INVALID SCORE'
} else if (score === 100) {
return 'A+'
} else if (score >= 90) {
return `A${plusAndMinus(score)}`
} else if (score >= 80) {
return `B${plusAndMinus(score)}`
} else if (score >= 70) {
return `C${plusAndMinus(score)}`
} else if (score >= 60) {
return `D${plusAndMinus(score)}`
} else {
return 'F'
}
}
일의 자릿수 찾으려고 참고한 사이트 https://medium.com/jongah-tech-blog/splice-slice-split-94816d793f96
Reference
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;
}
후기 :
제일 어려웠던 문제. 사실 배운 정석대로면 함수를 아직 안배웠으니 +- 부분도 조건문 속에 조건문 넣는다던지 해서 쭉 나열하면 되긴 할 것 같지만 함수를 활용해서 간결해 보이도록 만들고 싶었다. 다시보니 레퍼런스랑 비슷한 부분이 많아서 왠지 기분이 좋다? 정답에 근접한 것 같아서.
여기서도 리턴에 백틱을 이용했는데 , 이유는 레퍼런스에서처럼 변수를 선언은 하고싶어서 시도했으나 자꾸 에러가 떠서다. 변수를 넣기 시작하면 머릿속이 꼬여서인지 입력값과 변수를 어떻게 입력해야 할지 헷갈리면서 내 맘대로 적어버리고 어김없이 에러가 나는 것 같다. 지금은 백틱이 편하긴 한데(그리고 왠지 백틱이 재밌다..) 어차피 갈수록 변수 선언하는 거에 대해 익숙해져야 할 테니 앞으론 변수를 더 활용해 보려고 한다.
** 페어 분이 주신 팁
집중적으로 공부할 것
break continue (반복문에서 중요)
for in (배열이랑 객체 배울때 중요)
** 문제풀이 할 수 있는 곳
프로그래머스 백준
** 혼자 문제풀이 하다 막힐 땐 디버거 작동시켜보자
'코드스테이츠 FE 45기' 카테고리의 다른 글
Section 1 - Unit (6) 계산기 구현하 (0) | 2023.04.21 |
---|---|
Section 1 - Unit 5 반복문 문제 (0) | 2023.04.20 |
Section 1 - Unit (5) (0) | 2023.04.18 |
Section 1 - Unit (4) 계산기 목업 후기 (0) | 2023.04.17 |
Section 1 - Unit (4) (0) | 2023.04.14 |