본문 바로가기

백준/JavaScript

[JS] 백준 반복문 - 두 번째 이야기

728x90

 

오늘은 어제에 이어 반복문 두 번째 시간이다 ㅎㅎ.

 

 

문제 8393번

https://www.acmicpc.net/problem/8393

 

8393번: 합

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

반복문을 1부터 n까지 돌려서 sum 변수에 더해주면 될 것 같다.

 

 

const fs = require('fs');

//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';

//테스트
//const readFileSyncAdress = 'input.txt';

const input = fs.readFileSync(readFileSyncAdress).toString();
let sum=0;
for(let i = 1; i<=input; i++){
    sum+=i;
}

console.log(sum);

 

 

처음에 Number로 안 바꿔도 되나라는 생각이 들었는데 덧셈 연산자를 수행할 때 사용하는 변수는 sum과 i니까(둘 다 number) 잘 수행되는 것 같다.

 

 

 

 

문제 25304번

https://www.acmicpc.net/problem/25304

 

25304번: 영수증

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것

www.acmicpc.net

 

일단 줄을 기준으로 입력받고 다음에 공백을 기준으로 나뉜 부분은 나눠서 변수에 넣어주면 되겠다.

여기서 각 물건의 가격과 개수를 나눌 때는 i를 2부터 시작하여 N+2가 되기 전까지 반복문을 돌려줘야한다. 왜냐하면 i를 인덱스로 넣어줄건데, 각 물건의 가격과 개수는 인덱스 2부터 시작하기 때문이다.

 

const fs = require('fs');

//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';

//테스트
//const readFileSyncAdress = 'input.txt';

const input = fs.readFileSync(readFileSyncAdress).toString().split('\n');
let X=Number(input[0]);   //총 금액
let N=Number(input[1]);   //구매한 물건의 종류의 수
let a,b,sum=0;

for(let i = 2; i<N+2; i++){
    a=Number(input[i].split(' ')[0]); //각 물건의 가격
    b=Number(input[i].split(' ')[1]); //각 물건의 개수
    sum+=(a*b);
}

console.log(sum===X ? 'Yes' : 'No');

 

 

처음에 parseInt로 하니까 런타임 에러(ReferenceError)가 났다. 그래서 뭐가 잘못된지 모르겠어서 Number로 바꿨다. 그렇게 풀리고 계속 쳐다보니... 왜 저 에러가 발생했는지 알게 되었다.

 

그건 바로...

parseInt를 paresInt라고 작성했기 때문이다(하하...).

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이런...

 

 

 

 

 

그래서 처음에 작성했던 코드를 고쳐주면 이것도 성공~~

const fs = require('fs');

//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';

//테스트
//const readFileSyncAdress = 'input.txt';

const input = fs.readFileSync(readFileSyncAdress).toString().split('\n');
let X=parseInt(input[0]);   //총 금액
let N=parseInt(input[1]);   //구매한 물건의 종류의 수
let a,b,sum=0;

for(let i = 2; i<N+2; i++){
    a=parseInt(input[i].split(' ')[0]); //각 물건의 가격
    b=parseInt(input[i].split(' ')[1]); //각 물건의 개수
    sum+=(a*b);
}
if(sum==X){
    console.log('Yes');
}else{
    console.log('No');
}

 

 

 

 

 

이런 실수는 하지말자...

 

 

 

[참고]
https://velog.io/@hansong0222/JS-%EB%B0%B1%EC%A4%80-25304-%EC%98%81%EC%88%98%EC%A6%9D
728x90