본문 바로가기
개인공부/패스트캠퍼스 알고리즘

1강-5. 반복문 문제풀이

by 뭉지야 2023. 7. 28.
728x90

<합>
www.acmicpc.net/problem/8393

#포인트
-자연수 N의 최대 값은 10000이다.
-따라서, 단순히 1부터 10000까지의 값을 차례대로 더해도 괜찮다.
-이 경우 시간 복잡도 O(N)이다. 

#정답예시

//fs 모듈을 이용해 파일 전체를 읽어와 문자열로 저장하기
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//문자열을 수로 변환할 때 parseInt에 비하여 Number의 속도가 더 빠르게 동작
let n = Number(input[0]);
let summary = 0;

for(let i=1; i <= n; i++){
  summary += i;
}

console.log(summary);

 



# 포인트2
-혹은 단순히 등차수열의 합 공식을 이용할 수 있다.
-등차수열의 제 1항부터 제 N항까지의 합을 Sn이라고 하자.
-첫째 항이 a, 마지막 항이 l일때: Sn = N(a + l)/2

#정답예시2

//fs 모듈을 이용해 파일 전체를 읽어와 문자열로 저장하기
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//문자열을 수로 변환할 때 parseInt에 비하여 Number의 속도가 더 빠르게 동작
let n = Number(input[0]);

//등차수열의 합 공식
console.log(n * (n+1) / 2);


<구구단>
www.acmicpc.net/problem/2739

#포인트
-단순히 1단부터 N단까지 반복 문법을 이용하면 된다.
-2중 반복 문법을 사용하여 문제를 해결할 수 있다.

#정답예시

//fs 모듈을 이용해 파일 전체를 읽어와 문자열로 저장하기
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//문자열을 수로 변환할 때 parseInt에 비하여 Number의 속도가 더 빠르게 동작
let n = Number(input[0]);

for(let i=1; i<= 9; i++){
  //템플릿 리터럴을 사용해 문자열 내부에 변수를 포함합니다.(백틱 문자 사용)
  console.log(`${n} * ${i} = ${n * i}`);
}



<별 찍기1>
www.acmicpc.net/problem/2438

#내가 푼 코드

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);

for(let i=1; i<=9; i++){
  console.log(i * ${*});
}


#포인트
-2중 반복 문법을 이용하여 문제를 해결할 수 있다.

#정답예시

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);

let result = "";
for(let i = 0; i < n; i++){  //층(행)만큼 반복
  for(let j=0; j <= i; j++){   //현재 행만큼 별을 출력
     result += "*";
}
  result += "\n";
}
console.log(result);



<빠른 A+B>
www.acmicpc.net/problem/15552

#포인트
-JavaScript를 이용해 문자열을 출력할 수 있어야한다.
-빠르게 출력하기 위해 하나의 문자열 변수에 정보를 담은 뒤에 한꺼번에 문자열을 출력한다.
-한줄(line)을 출력할 때마다 console.log()를 수행하면 많은 시간이 소요된다.
-모든 "줄(line)"에 대한 정보를 하나의 문자열에 담았다가 한꺼번에 출력한다.

#정답예시

//fs모듈을 이용해 파일 전체를 읽어와 문자열로 저장하기
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

//문자열을 수로 변환할 때 parseInt에 비하여 Number의 속도가 더 빠르게 동작
let testCase = Number(input[0]);
let answer = '';

for(let t=1; t <= testCase; t++){
  let data = input[t].split(' ');
  let a = Number(data[0]);
  let b = Number(data[1]);
  answer += a + b + '\n';
}
 console.log(answer);
728x90