
오늘도 자바스크립트(JS) 기초 체력을 다지기 위해 돌아왔습니다. 작심삼일 중 2일차에 접어들었습니다. 꾸준함이 가장 큰 무기라는 생각으로 오늘도 가볍게 뇌를 풀어보도록 하겠습니다.
지난 포스팅에서는 배열과 기본적인 타입을 다뤘다면, 오늘은 조금 더 헷갈리기 쉬운 False 판별, 객체의 특성, 그리고 프로그래밍의 꽃(?)인 별 찍기 문제를 풀어보겠습니다. 그러고 보니 별 찍기 문제는 예전에도 한번 다뤘던 적이 있습니다.
[Python Quiz] 파이썬으로 크리스마스 트리 찍어 보기(그 유명한 별 찍기)
[Python Quiz] 파이썬으로 크리스마스 트리 찍어 보기(그 유명한 별 찍기)
오늘은 2024년도 크리스마스 입니다. 그런데 사무실에 나와 앉아 있습니다. 사람들이 없는 조용한 사무실이 평화롭게 느껴져 옵니다. 크리스마스니까 잠시 일손을 멈추고 언젠가 옛날 옛적 고리
kincoding.com
다만 예전에는 Python 코드로 작성을 했었습니다.(JS와 비교해보시는 것도 재미있을 것 같습니다^^)
개발하다가 은근히 자주 실수하는 부분들이니, 이번 기회에 확실히 메모해두기로 합니다. 여러분들도 저와 함께 정답을 맞춰보시죠!!
문제 6 : False
Q. 다음은 자바스크립트 문법 중에서 False로 취급하는 것들입니다. 앗, False로 취급하지 않는 것이 하나 있네요! True를 찾아주세요.
1. NaN
2. 1
3. ""
4. 0
5. undefined
[풀이]
자바스크립트에서는 '거짓'으로 취급하는 값(Falsy values)들이 정해져 있습니다. 이걸 외워두면 조건문 짤 때 아주 유용하죠. 대표적인 Falsy 값들은 null, undefined, 0, 빈 문자열(""), NaN, false 입니다.
이것들을 제외한 나머지는 모두 True로 취급됩니다. 따라서 보기 중에서 숫자가 들어있는 2번이 정답입니다.
정답: 2) 1
문제 7 : 변수명
Q. 다음 중 변수명으로 사용할 수 없는 것 2개를 고르시오.
1. age
2. Age
3. let
4. _age
5. 1age
[풀이]
변수명 짓기... 개발자들의 영원한 난제죠. 하지만 자바스크립트 문법적으로 아예 쓸 수 없는 규칙들이 있습니다.
• 3번 let: let은 변수를 선언할 때 쓰는 예약어(Reserved Word)입니다. 이미 자바스크립트가 찜해놓은 단어라 우리가 변수명으로 쓸 수 없습니다.
• 5번 1age: 변수명은 숫자로 시작할 수 없습니다. (중간이나 끝에는 들어갈 수 있어요!)
참고로 _ (언더바)나 $ 기호는 사용 가능합니다.
정답: 3) let, 5) 1age
문제 8 : 객체의 키 이름 중복
Q. 자바스크립트 객체를 다음과 같이 만들었습니다. 출력값을 입력하시오. (출력값은 공백을 넣지 않습니다.)
var d = {
'height':180,
'weight':78,
'weight':84,
'temperature':36,
'eyesight':1
};
console.log(d['weight']);
[풀이]
객체(Object) 안에 weight라는 키(Key)가 두 번 등장했습니다. 처음에는 78이었다가, 뒤에서 84로 다시 선언되었네요. 이런 경우, 자바스크립트는 "나중에 들어온 놈이 이깁니다." (덮어쓰기)
결국 d['weight']를 호출하면 마지막에 할당된 84가 출력됩니다. 궁금하면 콘솔 창에 찍어보는 거죠 뭐. 엔터 빡!
정답: 84
문제 9 : concat을 활용한 출력 방법
Q. 다음 소스 코드를 완성하여 날짜와 시간을 출력하시오.
데이터
var year = '2026';
var month = '02';
var day = '15';
var hour = '20';
var minute = '35';
var second = '12';
var result = //빈칸을 채워주세요
console.log(result);
출력
2026/02/15 20:36:12
[풀이]
문자열들을 줄줄이 사탕처럼 엮어주는 메서드, concat()을 활용하는 문제입니다.
concat() 메서드는 매개변수로 전달된 문자열을 메서드를 호출한 문자열에 붙여 새로운 문자열로 반환합니다.
var result = year.concat('/', month, '/', day, ' ', hour, ':', minute, ':', second);
console.log(result);
물론 요즘은 템플릿 리터럴(Template Literals)을 써서 `${year}/${month}...` 이렇게 더 편하게 쓰기도 하지만, concat의 존재도 잊지 말고 챙겨둡시다.
var result = `${year}/${month}/${day} ${hour}:${minute}:${second}`;
정답: year.concat('/', month, '/', day, ' ', hour, ':', minute, ':', second);
문제 10 : 별 찍기
Q. 2026년 크리스마스를 대비해서, 트리를 만드는 방법을 미리 학습해두기로 합니다!
아래 예시처럼, 숫자를 입력받은 후 해당 층 만큼의 높이를 갖는 크리스마스 트리를 별로 찍어봅시다.
입력
5
출력
*
***
*****
*******
*********
[풀이]
어떻게 잘 성공하셨나요? 반복문(for)을 중첩해서 공백( )과 별(*)을 적절히 배치해야 합니다.
규칙을 찾아봅시다.
1. i가 1부터 5까지 증가할 때,
2. 공백은 4, 3, 2, 1, 0개로 줄어듭니다. -> n - i
3. 별은 1, 3, 5, 7, 9개로 늘어납니다. -> 2 * i - 1
이 규칙을 코드로 옮겨보면 아래와 같습니다.
const n = prompt('숫자를 입력하세요.');
let tree = '';
for(let i=1; i<=n; i++){
let star = '';
for(let j=1; j<=n-i; j++){
star += ' ';
}
for(let k=1; k<=2*i-1; k++){
star += '*';
}
tree += star + '\n';
}
console.log(tree);
혹시라도 머릿속으로 로직이 잘 안 그려진다면, 손으로 직접 i, j, k 값을 써가면서 디버깅해보는 것을 추천합니다. 그게 코딩 근육을 키우는 지름길이니까요!
마치며
이렇게 자바스크립트 기초 문제 5가지를 추가로 풀어보았습니다. 특히 마지막 '별 찍기' 문제에서 "우쒸..." 하신 분들 계시죠? (저도 처음에 그랬습니다...) 하지만 이런 기초적인 논리 구조를 만드는 연습이 나중에 복잡한 알고리즘을 짤 때 큰 도움이 될 거라 믿습니다.
하루 5문제, 작심삼일이 되지 않도록 내일도 새로운 문제로 찾아오겠습니다. 여러분들도 저와 함께 매일매일 조금씩 성장해 나가시기를 바라겠습니다.
오늘도 즐거운 코딩(생활), 즐코딩.
KINcoding.
'Javascript > JS 기초 문제 풀이' 카테고리의 다른 글
| [Day01] 코딩 뇌를 깨우는 JS 기초 문제 풀이 (ft. 배열, 타입, 반복문) (0) | 2026.02.14 |
|---|
댓글