const, 변수와 상수 사이
const
- 재할당이 불가능
let x = 1;
console.log(x); // 1
x = 2;
console.log(x); // 2
const y = 3;
console.log(y); // 3
y = 4;
console.log(y); // Error
QUIZ 01
다음 코드의 실행결과로 올바른 것을 고르세요.
let x = 1;
x = 4;
const y = x;
y = 3;
x = 2;
console.log(x); // error -> const는 재할당이 불가능
QUIZ 02
다음 코드의 실행결과로 올바른 것을 고르세요.
let team1 = ['Drum', 'Bass', 'Saxophone'];
const team2 = team1; // ['Drum', 'Bass', 'Saxophone']
team1.splice(2, 1, 'Trumpet'); // ['Drum', 'Bass', 'Trumpet']
team2.splice(2, 1, 'Piano'); // ['Drum', 'Bass', 'Piano']
console.log(team1); // ['Drum', 'Bass', 'Piano']
console.log(team2); // ['Drum', 'Bass', 'Piano']
실습
0! = 1
1! = 1
2! = 1 * 2 = 2
3! = 1 * 2 * 3 = 6
4! = 1 * 2 * 3 * 4 = 24
5! = 1 * 2 * 3 * 4 * 5 = 120
6! = 1 * 2 * 3 * 4 * 5 * 6 = 720
그러면, 파라미터로 양의 정수 n을 받고 n!을 계산해서 리턴해 주는 함수 factorial을 작성해주세요.
function factorial(n) {
let result = 1;
for(let i=1; i<=n; i++) {
result = result * i;
}
return result;
}
// 테스트 코드
console.log(factorial(12));
console.log(factorial(6));
console.log(factorial(3));
console.log(factorial(0));
실습 결과
479001600
720
6
1
실습
현태는 현명하게 거스름돈을 계산해주는 프로그램을 만들려고 합니다. 예를 들어 33,000원짜리 물건을 사기 위해 100,000원을 냈다면,
- 50,000원 1장
- 10,000원 1장
- 5,000원 1장
- 1,000원 2장
이런 식으로 '가장 적은 수'의 지폐를 거슬러 주는 것입니다. 방금 같은 경우에는 총 5장을 거슬러 준거죠.
우리는 calculateChange라는 함수를 작성하려고 하는데요. 이 함수는 지불한 금액을 나타내는 payment와 물건의 가격을 나타내는 cost를 파라미터로 받습니다.
주어진 코드에 이어서 깔끔하게 프로그램을 작성해보세요.
function calculateChange(payment, cost) {
// 거스름돈 총액
let change = payment - cost;
// 50000원 지폐개수
const fiftyCount = (change - (change % 50000)) / 50000;
change = change - 50000 * fiftyCount;
// 10000원 지폐개수
const tenCount = (change - (change % 10000)) / 10000;
change = change - 10000 * tenCount;
// 5000원 지폐개수
const fiveCount = (change - (change % 5000)) / 5000;
change = change - 5000 * fiveCount;
// 1000원 지폐개수
const oneCount = (change - (change % 1000)) / 1000;
change = change - 1000 * oneCount;
console.log(`50000원 지폐: ${fiftyCount}장`);
console.log(`10000원 지폐: ${tenCount}장`);
console.log(`5000원 지폐: ${fiveCount}장`);
console.log(`1000원 지폐: ${oneCount}장`);
}
// 테스트 코드
calculateChange(100000, 33000);
console.log('');
calculateChange(500000, 378000);
실습 결과
50000원 지폐: 1장
10000원 지폐: 1장
5000원 지폐: 1장
1000원 지폐: 2장
50000원 지폐: 2장
10000원 지폐: 2장
5000원 지폐: 0장
1000원 지폐: 2장
실습
"토마토"나 "기러기"처럼 거꾸로 읽어도 똑같은 단어를 팰린드롬(palindrome)'이라고 부릅니다.
팰린드롬 여부를 확인하는 함수 isPalindrome으 작성하려고 하는데요. isPalindrome은 파라미터 word가 팰린드롬이면 true를 리턴하고 팰린드롬이 아니면 false를 리턴합니다.
예를 들어서 "racecar"과 "토마토"를 거꾸로 읽어도 똑같기 때문에 true가 출력되어야 합니다. 그리고 "hello"는 거꾸로 익으면 "olleh"가 되기 때문에 false가 나와야 하는 거죠.
function isPalindrome(word) {
const reverseWord = word.split('').reverse().join('');
if (word == reverseWord) {
return true;
} else {
return false;
}
}
// 테스트 코드
console.log(isPalindrome("racecar"));
console.log(isPalindrome("stars"));
console.log(isPalindrome("기러기"));
console.log(isPalindrome("123321"));
console.log(isPalindrome("hello"));
console.log(isPalindrome("kayak"));
실습 결과
true
false
true
true
false
true
** 배열의 경우 reverse()로 뒤집을 수 있지만, 문자열은 reverse()가 존재하지 않아서 사용 불가능
해결법
1. 문자열 -> 배열 : split(' ')
2. 배열 뒤집기 : reverse()
3. 배열 -> 문자열 : join(' ')