두 개의 수와 기호를 입력받아 알맞게 계산한 값을 리턴해야 합니다.
function miniCalculator(num1, num2, operator) {
if (operator === '+') {
return num1 + num2;
} else if (operator === '-') {
return num1 - num2;
} else if (operator === '*') {
return num1 * num2;
} else if (operator === '/') {
return num1 / num2;
}
}
특정 달(month)을 입력받아 각 달에 몇 일이 있는지 리턴해야 합니다.
2월 29일은 없는 걸로.
function daysInMonth(month) {
if (month === 2){
return 28
} else if (month === 4 || month === 6 || month === 9 || month === 11){
return 30
} else {
return 31
}
}
두 개 수를 입력받아 아래의 2가지 조건을 모두 만족하는지 검사합니다.
function isEitherEvenAndLessThan9(num1, num2) {
if ((num1 % 2 === 0 || num2 % 2 === 0) && (num1 < 9 && num2 <9)){
return true
} else {
return false
}
}
내가 쓴 답. if 괄호 안에 괄호를 이용해서 답을 도출
function isEitherEvenAndLessThan9(num1, num2) {
if (num1 < 9 && num2 < 9) {
if (num1 % 2 === 0 || num2 % 2 === 0) {
return true;
}
return false;
}
return false;
}
레퍼런스. if 안에 if의 범위를 넣어 먼저 지정해주고, 그 안에서 다시 가정
function convertScoreToGradeWithPlusAndMinus(score) {
if (score < 0 || score > 100){
return 'INVALID SCORE'
} else if (score >= 98){
return 'A+'
} else if (score >= 93){
return 'A'
} else if (score >= 90){
return 'A-'
} else if (score >= 88){
return 'B+'
} else if (score >= 82){
return 'B'
} else if (score >= 80){
return 'B-'
} else if (score >= 78){
return 'C+'
} else if (score >= 72){
return 'C'
} else if (score >= 70){
return 'C-'
} else if (score >= 68){
return 'D+'
} else if (score > 62){
return 'D'
} else if (score >= 60){
return 'D-'
} else if (score < 60){
return 'F'
}
}
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;
}
지금 보니 나도 저런 1의 자리 구하는 방식을 이용했는데
저렇게 여러 변수들을 이용할 거라고 생각하지 못했다.. 심지어 함수가 두 개구나..
function PlusAndMinus(score) {
const result = score % 10
if (result <= 2){
return '-'
} else if (result >= 8){
return '+'
} else {
return ''
}
}
function convertScoreToGradeWithPlusAndMinus(score) {
let final;
if (score === 100){
return 'A+'
} else if (score < 0 || score > 100){
return 'INVALID SCORE'
} else if (score >= 90){
final = 'A'
} else if (score >= 80){
final = 'B'
} else if (score >= 70){
final = 'C'
} else if (score >= 60){
final = 'D'
} else if (score < 60){
final = 'F'
}
if (final !== 'F'){
grade = final + PlusAndMinus(score)
} else {
grade = final
}
return grade
}
겨우겨우 마무리 지었다. 59점 0점 2점일 때 F결과를 계속 D-로 도출해서 final 이 F라면 F를 도출하라고 else 를 넣었다.
근데 레퍼런스랑 비교해보니 F학점을 score >= 0 으로 했다. 나는 score < 60.
무슨 차이가 있나.. 한참 생각 중이다. 이유가 뭘까? ㅠ ㅠ
삼각형이 직각삼각형인지 판별해 내는 문제
난제는 side1,2,3이 어떤 부분이 빗변인지 높이인지 모른다는 것.
따라서 세개의 경우의 수를 구해야 한다
function isPythagorean(side1, side2, side3) {
if ((side1 * side1 + side2 * side2 ==== side3 *side3) || (side1** + side3** === side2**) || (math.pow(side2,2)+Math.pow(side3,2)===math.pow(side1*2))){
return true
} else {
return false
}
}
처음에 적었던 건데, 제곱수를 구하는 세가지를 저런식으로 if 구문에 쑤셔넣었다
false 값만 출력이 안되는 일..
그래서 else if 에 ===를 !== 로 바꾸고 (||도 &&로 바꿔봤음) 그랬는데도 어림도 없었다.
그래서 약간 힌트를 얻었는데 약간 터무니 없이 무대뽀로 하던 나를 반성했음
function isPythagorean(side1, side2, side3) {
const a2 = side1 * side1
const b2 = side2**2
const c2 = Math.pow(side3,2)
if (a2+b2===c2 || a2+c2===b2 || b2+c2===a2) {
return true
} else {
return false
}
최종 답안
function or(expression1, expression2) {
if (!expression1 && !expression2){
return false
} else {
return true
}
}
난 이렇게 적어서 통과 했는데 , 레퍼런스는 달랐따
function or(expression1, expression2) {
if (expression1 === true && expression2 === true) {
return true;
} else if (expression1 === true && expression2 !== true) {
return true;
} else if (expression1 !== true && expression2 === true) {
return true;
} else if (expression1 !== true && expression2 !== true) {
return false;
}
}
||는 둘다 false인 경우에만 false로 출력되고 문자열은 기본적으로 true 값을 가지고 있던 게 아니었나?
그렇다고 생각해서 매개변수에 !만 붙여서 둘다 false일때만 false, 나머지는 true 라고 적었는데..
시, 분, 초를 입력받아 1초를 더한 결과값을 특정 형태의 메시지로 리턴해야 합니다.
function addOneSecond(hour, minute, second) {
if (second === 59){
minute += 1
second === 0
} else if (minute === 60){
hour += 1
minute === 0
} else {
return '1초 뒤에' + hour + '시' + minute + '분' + second + '초 입니다'
}
}
function addOneSecond(hour, minute, second) {
if (second === 59){
minute += 1
second = 0
} else if (minute === 60){
hour += 1
minute = 0
} else {
second +=1
return `1초 뒤에 ${hour}시 ${minute}분 ${second}초 입니다`
}
}
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 부터 차근차근 다 다른 조건문을 만들어줘야했던 거였다
second가 59초일때, minute가 60분일때... 이런 것만 생각하다보니까 이런 일이 일어난 듯 ㅜㅜ
임의의 값을 입력받아 falsy 값인지 여부를 리턴해야 합니다.
function isFalsy(anything){
return !Boolean(anything)}