알고리즘 - 테스트 준비

이한결·2023년 2월 1일
0

부트 캠프

목록 보기
35/98
post-thumbnail

2월 1일 여정 24일차이다.

백준에서는 문제를 처음 풀어보았다.
항해99에서 내일 테스트 전에 힌트라고 주신 문제였다.

오늘의 Today I Learned

1. 백준 5585 거스름돈

타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사고 카운터에서 1000엔 지폐를 한장 냈을 때, 받을 잔돈에 포함된 잔돈의 개수를 구하는 프로그램을 작성하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const fs = require('fs');
 
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
 
 
let change = 1000 - input;
 
let count = 0;
 
while (change !== 0) {
    if (change >= 500) change = change - 500;
    else if (change >= 100) change = change - 100;
    else if (change >= 50) change = change - 50;
    else if (change >= 10) change = change - 10;
    else if (change >= 5) change = change - 5;
    else change--;
 
    count++;
}
 
console.log(count);
cs

코드 리뷰

  1. 먼저 잔돈을 계산한다.

  2. 잔돈이 0원이 될 때까지, while문을 돌리면서 count를 증가 시킨다.

  3. count를 반환한다.

2. 백준 8958 OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
 
let num = Number(input[0]);
 
for (let i = 1; i <= num; i++) {
  let count = 0;
  let sum = 0;
 
  for (let j = 0; j < input[i].length; j++) {
    if (input[i][j] === "O") {
      count++;
    } else {
      count = 0;
    }
    
    sum += count;
  }
  
  console.log(sum);
}
 
cs

코드 리뷰

  1. 입력값의 배열의 0번째 5라는 것을 숫자로 변수에 저장한다.

  2. 이중 for문을 돌려서 count와 sum을 저장한다.

  3. 'O'가 있으면 count를 더하고 'X'일 경우 count를 0으로 바꾸어 준다.

  4. 값을 계속 sum에 누적하여 더한다.

  5. sum을 반환한다.

profile
평범한 삶을 위하여

0개의 댓글