Javascript 오답 노트 01
Javascript 오답노트 정리 첫 번째 시간입니다.
맞은 문제가 거의 없어서 쓸게 너무 많네요 ㅠㅠ..
틀린 문제를 잘 정리해서 다음에는 많이 맞추도록 합시다!
01. 다음의 결과값을 작성하시오.
{
function func(){
for( i =1; i<=7; i++){
for( j=1; j<=i; j++){
document.write(j);
}
document.write("<br>")
}
}
func();
}
중첩 for문에 대한 문제입니다.
i에 들어갈 수 있는 숫자는 1,2,3,4,5,6,7이고 1부터 대입합니다.
두번째 for문에서 1<=1는 조건에 맞으니 j값을 출력하고 j++합니다.
j에 2를 대입할시 조건에 맞지 않으므로 i로 올라갑니다.
i에 2를 대입하고 위의 과정을 반복하면 아래의 답이 나옵니다.
정답 확인하기
12
123
1234
12345
123456
1234567
02. 다음의 결과값을 작성하시오.
{
function func(){
let i = 10, hap = 0;
while(i>1){
i--;
if( i % 3 ==1){
hap += i;
}
}
document.write(hap);
}
func();
}
while문에 대한 문제입니다.
i는 10에서 true로 시작이지만 i--가 있어서 9부터 시작하고 if문안에 들어갈 수 있는 i는 9~1이 됩니다.
while문 안에 if조건문 i를 3으로 나눈 나머지값이 1이 나오는 것은 7,4,1가 되고 합은 12입니다.
정답 확인하기
03. 다음의 결과값을 작성하시오.
{
function func(){
let a = [];
for( i=1; i<=15; i+=4){
a += [i]
}
document.write(a);
}
func();
}
for문에 배열에 대한 문제입니다.
i에 들어갈 수 있는 숫자는 1~15가 되고 a는 [i]를 더한값이니 조건문에 따르면
a의 값은 1,1+4,5+4,9+4가 됩니다.
정답 확인하기
04. 다음의 결과값을 작성하시오.
{
function func(){
let a = [1,2,3,4,5,6,7,8,9], cnt = 0;
for( i=0; i<a.length; i++){
if(a[i] % 2 == 0){
cnt = cnt + 1;
}
}
document.write(cnt);
}
func();
}
for문에 배열에 대한 문제입니다.
i<9 인 a값을 if 조건문을에 대입해서 해석하면 짝수의 합이 됩니다.
cont는 0이고 조건에 맞을때마다 +1 한다고 하면 2,4,6,8 이 나와서 4개가 됩니다.
정답 확인하기
05. 다음의 결과값을 작성하시오.
{
function func(data,exp){
let result = 1;
for( i = 0; i<exp; i++){
result = result * data
}
document.write(result);
}
func(3, 3);
}
for문에 대한 문제입니다.
func에 3,3을 그대로 대입시켜보면 for문 i에 들어갈 수 있는 숫자는 0,1,2가 됩니다. 0부터 돌립니다.
result는 1인 상태이고 1*3 = 3이 됩니다. 다시 위로 올라가서 1을 돌리고 2를 돌립니다.
이 과정을 거치면 1*3= 3 , 3*3 = 9 , 9*3 = 27이 됩니다.
정답 확인하기
06. 다음의 결과값을 작성하시오.
{
function func(){
let a = [2,3,2,4,5,6,7,2,3,3,2];
let value = 0;
for( i =0; i<a.length; i++){
if(a[i] == 7){
value++;
}
}
document.write(value);
}
func();
}
for문에 배열에 대한 문제입니다.
for문에서 i에 들어갈 수 있는 숫자는 0~10이 됩니다.
이 중에서 i값이 7일 경우 value값을 ++하게 되니 답은 1이됩니다.
정답 확인하기
07. 다음의 결과값을 작성하시오.
{
function func(){
let i, j = 0;
for( i = 0; i<5; i++){
j+= i;
}
document.write(i);
document.write(j);
}
func();
}
for문에 대한 문제입니다.
i에 들어갈 수 있는 숫자가 0,1,2,3,4
j는 계속 더해 나가면 i가 0일때 0,
1일때 1,
2일때 3,
3일때 6,
4일때 10이 됩니다.
5는 for문을 만족시키지 못하니 반복문을 빠져나오게 되고, 답은 i는 5 , j는 10이 됩니다.
정답 확인하기
10
08. 다음의 결과값을 작성하시오.
{
function func(){
let a = 12, b = 8, c = 2, d = 3;
a /= b - c * d;
document.write(a);
document.write(a*b);
}
func();
}
그냥 그대로 대입해보면 a는 6이 나오고 b는 8이니 곱해서 48이 나옵니다.
이런 간단한 문제를 제가 왜 틀렸는지 모르겠습니다..ㅠㅠ 1주차는 정말 심각했군요.
정답 확인하기
48
09. 다음의 결과값을 작성하시오.
{
function func(){
let a = 0, sum = 0;
while( a < 10){
a++;
if(a % 2 ==1) continue;
sum += a;
}
document.write(sum);
}
func();
}
while과 continue의 개념에 대해 묻고 있는 문제입니다.
while 을 지나서 a++를 받고나면 a는 1~10이 됩니다.
여기서 if문의 조건 2로나눈 나머지가 1인 숫자는 1,3,5,7,9가 됩니다.
continue는 조건에 맞아 다시 시작하는 시점은 포함하지 않기 때문에 남는 숫자는 짝수의 합이 됩니다.
따라서 답은 2+4+6+8+10 이 됩니다.
정답 확인하기
10. 다음의 결과값을 작성하시오.
{
function func(){
let i = 0; sum = 0;
while(1){
i++;
if( i > 10) break;
if(i % 5 == 0) continue;
sum += i;
}
document.write(sum);
}
func();
}
while과 break coutinue의 개념에 대해 묻고 있는 종합형 문제입니다.
while(1)은 true이니 실행시킵니다. i의값은 1++로 1로 시작합니다.
첫번째 if문을 이후의 i의 값은 1~10
두번째 if문을 만족하는 값은 5, 10으로 이를 제외하고 더합니다.
답은 1+2+3+4+6+7+8+9가 됩니다.
정답 확인하기
11. 다음의 결과값을 작성하시오.
{
function solution(data){
var answer = data;
answer = answer.toLowerCase();
return answer;
}
document.write(solution("Javascript"));
}
toLowerCase에 대해 묻는 문제입니다.
Javascript 값을 data에 대입하면 answer 값은 Javascript가 됩니다.
이를 소문자로 바꿔주고 값을 리턴합니다.
toLowerCase도 아는데 왜 틀렸을까요...
정답 확인하기
12. 다음의 결과값을 작성하시오.
{
function solution(a,b,c){
let answer;
if(a < b) answer = a;
else answer = b;
if( c < answer ) answer = c;
return answer;
}
document.write(solution(2, 5, 1));
}
if문에 대한 return값 문제입니다.
이것도 차례대로 대입하면 그냥풀립니다...
자괴감이..
정답 확인하기
17. 다음의 결과값을 작성하시오.
{
for(let i = 0; i < 5; i++){
for(let j = 0; j < 5; j++){
document.write('*');
}
document.write('<br>');
}
}
드디어 날먹 문제들을 맞추고 넘어왔습니다.
중첩 for문에 대한 문제입니다.
1번 문제와 같은 유형으로 i가 0일때 아래로 내려가서 j식을 돌려주면 가로로 *가 나옵니다.
br태그는 바깥쪽 for문에 대한 결과값이니 세로로 나오게 됩니다.
만족 값은 5개, 5개로 아래와 같이 답이 나옵니다.
정답 확인하기
*****
*****
*****
*****
18. 다음의 결과값을 작성하시오.
{
function solution(a,b){
let num = a > b;
return num;
}
document.write(solution(5,9))
}
이것도 그냥 대입하면 됩니다.
성립되지 않는 값을 리턴하니 false가 나옵니다.
정답 확인하기
19. 다음의 결과값을 작성하시오.
{
function solution(a, b){
return (a + b) * ((a > b ? a - b : b - a) + 1) / 2;
}
document.write(solution(5, 9))
}
삼항연산자가 들어간 return값을 구하는 단순 계산문제입니다
대입해보면 a > b ?에서 성립하지 않으니 b - a로 계산합니다.
14 * 5 / 2 = 35가 됩니다.
정답 확인하기
20. 다음의 결과값을 작성하시오.
{
function solution(text){
return text.split('').join('/').replace('s','site')
}
document.write(solution('webs'))
}
드디어 오답노트 첫 번째 시간 마지막 문제입니다.
split, join, replace 메서드에 대해 묻고있는 문제입니다.
text에 webs를 대입하고 split으로 쪼개서 배열로 반환한 뒤, join으로 결합해주면 w/e/b/s가 됩니다.
여기에 replace로 s를 site로 바꿔해주면 w/e/b/site가 됩니다.
정답 확인하기
이제 두번째 시험 오답노트를 쓰러 가야겠네요..
틀린 점이 있다면 지적해주시면 감사하겠습니다.
'오답 노트' 카테고리의 다른 글
Javascript 오답 노트 04 (1) | 2022.10.23 |
---|---|
Javascript 오답 노트 03 (4) | 2022.10.06 |
Javascript 오답 노트 02 (4) | 2022.10.02 |
댓글