본문 바로가기
front-end 공부하기/코딩테스트

알고리즘 공부하기 (javascript) 7가지 문제

by 치즈도넛 2022. 9. 30.
반응형

처음 스터디에서 알고리즘 문제를 받았을 때 너무 어렵고 당황스러웠는데

그 뒤, 프로그래머스 스쿨 코딩 테스트를 풀기 시작하고 알고리즘에 익숙해지면서 다시한번 문제를 풀어보았습니다!

 

모두 결괏값을 구하는 문제입니다

 

1번 문제

function func(){
  for(i=1; i <=7; i++){
    for(j=1; j<=i; j++){
      document.write(j);
    }
    document.write("<br>")
  }
}

func();

정답

더보기

1

12

123

1234

12345

123456

1234567

해설

더보기
function func(){
  // 첫번째 for문은 1,2,3,4,5,6,7 => 7번 반복된다
  for(i=1; i <=7; i++){
    // 두번째 for문은 i의 값만큼 반복된다
    for(j=1; j<=i; j++){
      document.write(j); // 1 <br> 1 2 <br> ...
    }
    document.write("<br>")
  }
}

func();

 

2번 문제

function func(){
  let i = 10, hap = 0;
  while(i>1){
    i--;
    if(i%3==1){
      hap += i;
    }
  }
  document.write(hap);
}

func();

정답

해설

더보기
function func(){
  let i = 10, hap = 0;
  while(i>1){ (10,9,8,7,6,5,4,3,2)로 반복
    i--; // 1씩 감소 (9,8,7,6,5,4,3,2,1)이 차례대로 나옴
    if(i%3==1){ // i는 3으로 나눈 다음 나머지가 1이면 true (7,4,1)
      hap += i; //if에서 참인 값을 차례대로 더해줌 (12)
    }
  }
  document.write(hap);
}

func();

 

3번 문제

function func(){
  let a = [];
  
  for( i=1; i <=15; i+=4){
    a += [i];
  }
  document.write(a);
}

func();

정답

더보기

15913

해설

더보기
function func(){
  let a = []; // 배열
  
  for( i=1; i <=15; i+=4){ // 1, 5, 9, 13
    a += [i]; // 더하기 할당에서 숫자는 더하기 나머지(string, arr등)는 이어 붙임
  }
  document.write(a); // 15913
}

func();

 

4번 문제

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();

정답

해설

더보기
function func(){
  let a = [1,2,3,4,5,6,7,8,9], cnt = 0;
  
  for(i=0; i<a.length; i++){ // length : 9 => 9번 반복 (i = 0,1,2,3,4,5,6,7,8)
    if(a[i]%2==0){ // i의 인덱스가 짝수인 경우 true (i = 1,3,5,7)
      cnt = cnt +1; // 0 = 0 + 1 / 1 = 1 + 1 / 2 = 2 + 1 / 3 = 3 + 1 => cnt = 4
    }
  }
  document.write(cnt);
}

func();

 

5번 문제

function func(data, exp){
  let result = 1;
  for(i=0; i<exp; i++){
    result = result * data
  }
  document.write(result);
}

func(3,3);

정답

해설

더보기
function func(data, exp){
  let result = 1;
  for(i=0; i<exp; i++){ //i = 0, 1, 2 => 3번 반복
    result = result * data // result = 1 * 3 / 3 = 3 * 3 / 9 = 9 * 3 => result = 27
  }
  document.write(result);
}

func(3,3);

 

6번 문제

function func(){
  const 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();

정답

해설

더보기
function func(){
  const a = [2,3,2,4,5,6,7,2,3,3,2];
  let value = 0;
  for(i=0; i<a.length; i++){ //length : 11 / i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    if(a[i]==7){ // index가 증가하면서 7의 값을 가지고 있으면 true
      value++; // 7은 한번 밖에 없어서
    }
  }
  document.write(value); // value = 1
}

func();

 

7번 문제

function func(){
  let i,j = 0;
  
  for( i=0; i<5; i++){
    j += i;
  }
  document.write(i);
  document.write(j);
}

func();

정답

더보기

5 10

해설

더보기
function func(){
  let i,j = 0;
  
  for( i=0; i<5; i++){ // i = 0, 1, 2, 3, 4
    j += i; // j = 10
  }
  document.write(i); // 5
  document.write(j); // 10
}

func();

 

반응형

댓글