2016λ
λ¬Έμ π
2016λ 1μ 1μΌμ κΈμμΌμ λλ€. 2016λ aμ bμΌμ λ¬΄μ¨ μμΌμΌκΉμ? λ μ a ,bλ₯Ό μ λ ₯λ°μ 2016λ aμ bμΌμ΄ λ¬΄μ¨ μμΌμΈμ§ 리ν΄νλ ν¨μ, solutionμ μμ±νμΈμ. μμΌμ μ΄λ¦μ μΌμμΌλΆν° ν μμΌκΉμ§ κ°κ° SUN,MON,TUE,WED,THU,FRI,SAT
μ λλ€. μλ₯Ό λ€μ΄ a=5, b=24λΌλ©΄ 5μ 24μΌμ νμμΌμ΄λ―λ‘ λ¬Έμμ΄ βTUEβλ₯Ό λ°ννμΈμ.
- 2016λ μ μ€λ μ λλ€.
- 2016λ aμ bμΌμ μ€μ λ‘ μλ λ μ λλ€. (13μ 26μΌμ΄λ 2μ 45μΌκ°μ λ μ§λ μ£Όμ΄μ§μ§ μμ΅λλ€)
λμ νμ΄ πββοΈ
function solution(a, b) {
const dayOfTheWeek = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];
const daysOfMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let sum = 0;
if (a === 1) {
sum = b;
} else {
for (let i = 0; i <= a - 2; i++) {
// 1
sum += daysOfMonth[i];
if (i == a - 2) {
sum += b; //2
}
}
}
const index = sum - Math.floor(sum / 7) * 7; // 3
return index === 0 ? dayOfTheWeek[6] : dayOfTheWeek[index - 1];
}
λ΄κ° μκ°ν νμ΄μ μμλ λ€μκ³Ό κ°λ€.
- μ£Όμ΄μ§ μ(a)μ μ μ΄ λ μ§λ₯Ό λν κ°μ ꡬνλ€.. =
sum
sum
μb
λ₯Ό λν΄ νμν λ μ§λ₯Ό λͺ¨λ λν κ°μ ꡬνλ€.sum
μ 7μ λ°°μλ₯Ό λΊμ λ λμ¬ μ μλ νμ리 μλ₯Ό ꡬν΄dayOfTheWeek
μ μΈλ±μ€λ‘ νμ©νλ€.
trouble shooting 1 π₯
μ²μ μ½λ
for (let i = 0; i <= a - 2; i++) {
sum += daysOfMonth[i];
if (i == a - 2) {
sum += b;
}
}
μμ ν μ½λ
if (a === 1) {
sum = b;
} else {
for (let i = 0; i <= a - 2; i++) {
sum += daysOfMonth[i];
if (i == a - 2) {
sum += b; //2
}
}
}
μ΄ λΆλΆμ μ ν΅κ³Όνμ§ λͺ»νλμ§ λ¨Έλ¦¬λ₯Ό κ΅΄λ¦¬λ€ 1μμΈ κ²½μ°, 2μμΈ κ²½μ° κ°μ λμ ν΄μ μκ°ν΄λ³΄λ λ¬Έμ μ μ μ°Ύμ μ μμλ€.
λ§μ½ 1μμ΄λΌλ©΄ a
λ 1μ΄λλλ° for
λ¬Έμ 쑰건μ μ²μλΆν° μΆ©μ‘±λμ§ λͺ»ν΄μ sum
μ κ°μ΄ λ€μ΄κ°μ§ μμλ κ²μ΄λ€.
if
λ¬ΈμΌλ‘ 쑰건μ λ¬μμ£ΌκΈ΄ νμ§λ§ 쑰건문μ λ°λ³΅λ¬Έμ 쑰건문.. μ λ§ λ§μ λ€μ§ μλλ€..
trouble shooting 2 π₯
μ²μ μ½λ
return dayOfTheWeek[index - 1];
μμ ν μ½λ
return index === 0 ? dayOfTheWeek[6] : dayOfTheWeek[index - 1];
κ³μ°λλ‘ νλ©΄ λͺ¨λ μΌμ΄μ€κ° ν΅κ³Όν΄μΌνλλ° 13κ°μ μΌμ΄μ€ μ€ 2κ°κ° ν΅κ³Όνμ§ λͺ»νκ³ κ³μ μ€ν¨λ‘ κ±Έλ Έλ€.
ν μ€νΈ μΌμ΄μ€μ λ μ§λ₯Ό νλ νλ μΆκ°ν΄μ κ²°κ³Όλ₯Ό νμΈνλ μ€ μ΄μ λ₯Ό μ μ μμλ€.
index
κ° 0μ΄ λ μλ μμλκ²μ΄μλ€.
μλ₯Ό λ€μ΄ 5μ 5μΌμΈ κ²½μ°, index
κ° 126 - (18*7) = 0
μ΄ λλλ° λλ κ²°κ³Όκ°μ dayOfTheWeek[index-1]
λ‘λ§ λ¦¬ν΄ν΄μ κ²°κ³Όκ° undefined
κ° λμλ κ²μ΄λ€.
return
ν λ μΌνμ°μ°μλ₯Ό μ΄μ©ν΄ index
κ° 0μ΄ λ κ²½μ°μ μΌμ΄μ€λ μ²λ¦¬ν΄μ£Όμλ€.
Best Practice #1 π
function getDayName(a, b) {
var tempDate = new Date(2016, a - 1, b);
return tempDate.toString().slice(0, 3).toUpperCase();
}
//μλ μ½λλ ν
μ€νΈλ₯Ό μν μ½λμ
λλ€.
console.log(getDayName(5, 24));
Date
κ° μλ κ±Έ μκΈ΄ νμ§λ§ κ·Έλ¬λ©΄ λ무 λ¨μν΄μ§κ²κ°μμ μ¬μ©νμ§ μμλ€.
κ·Έλλ λ©μλλ₯Ό μ¬μ©νκ±Έ 보λ ν¨μ¬ 보기 νΈνλ€.
Best Practice #2 π
function solution(a, b) {
const monthDay = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
const weekDay = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"];
let days = b;
for (let i = 0; i < a - 1; i++) days += monthDay[i];
return weekDay[days % 7];
}
μ½λκ° νλ¬κ°λ ꡬμ±μ΄ λ΄κ° μμ±ν μ½λμ ν¬κ² λ€λ₯΄μ§ μλ€.
νμ§λ§ κ°κ²°ν¨κ³Ό κ°λ μ±μ΄ ν¬κ² λ€λ₯΄λ€.
for
λ¬Έμ 쑰건μμμ <=
μ <
λ‘ κ³ μ³€μλΏμΈλ° if
λ¬Έμ΄ νλ μ€μλ€.
κ΅³μ΄ sum
μ΄λΌλ λ³μλ₯Ό μλ‘ λ§λ€μ§ μκ³ b
μ κ°μ λν΄μ£Όμλ€.
κ΅³μ΄β¦ Math.floor()
λ₯Ό μ¬μ©νμ§ μκ³ λ κ·Έλ₯ %
μ°μ°μλ‘ λλ¨Έμ§κ° κ³μ°ν΄μ indexλ‘ μ²λ¦¬ν΄μ£Όμλ€β¦
λ§μ½ λ€λ₯Έ μ¬λμ΄ νΌ λ΅μ Best Practiceκ° μλ€λ©΄ λ°°μ΄ λ΄μ₯ ν¨μλ₯Ό μ¬μ©νμ κ²μ΄λΌκ³ μκ°νλλ° μλμλ€.
λ¬Όλ‘ λ°°μ΄ λ΄μ₯ ν¨μλ₯Ό μ¬μ©ν μλ μμ§λ§ μ΄ μ½λκ° κ°λ μ±λ μ’κ³ μ μΌ μ’μ보μλ€.
π¬ μ΅μ λκΈ