... 오늘도 할 일을 마치고 문제를 고르던 어느날...
음... 이 문제는 너무 어렵고...
하핫... 이 문제는 내가 아직 이해를 못 할 것 같군...
안되겠다... 익숙하지 않다보니 쉽지가 않다...(학교 프로젝트로 JavaScript 사용했으면 좋았을텐데...)
이대로 가다간...!!!!
다른 풀이에 의존만해서 혼자서는 JavaScript로 문제를 해결하지 못할거야!!!!
크흣....!!
??: 잠깐! 이렇게 해결하면 될거야
(빠바빠바밤~ 빠바빠바밤~ 빠바빠바바라바바바밤)
??: 나는 고등학생 탐정 남x도일 소꿉친구이면서 같은 ㅂ....(생략)
(잠시후)
??: JavaScript를 처음해서 어렵다고?? 그렇다면 백준 문제 단계별로 풀어보기를 먼저해봐.
어? 나도 자바랑 C++ 시작할 때 해본적 있느..ㄴ(싹둑) -> 어이.. 남x도일씨 왜 말을 잘라...
??: 입출력과 사칙연산부터 정렬 즉, 12단계까지 풀고 어느정도 익숙해졌다면 (생략)
??: 아! 참고로 단계별로 풀어보기 다음에 생략된 부분이 궁금하다면 여기서 봐 ㅎㅎ 나도 여기서 참고했으니까.
진실은 언제나 하나!
그래서 오늘부터 시작될 단계별로 문제 풀이~~!! 입출력과 사칙연산~!
문제
https://www.acmicpc.net/step/1
입출력과 사칙연산 단계
입출력과 사칙연산
www.acmicpc.net
오늘의 첫번째 이야기는~~~~
문제 2557번
https://www.acmicpc.net/problem/2557
2557번: Hello World
Hello World!를 출력하시오.
www.acmicpc.net
이럴수가!! 첫번째 문제는 백준 2557번 Hello World이다. 이건... 처음에 JavaScript를 시작할 때 풀었던 문제이다.
그래도.... 새로 다시 시작하는 마음으로 출력해줘야지!!
console.log("Hello World!");
ㅎㅎ
그래... 안녕... 또 만나서 반가워
문제 1000번
https://www.acmicpc.net/problem/1000
1000번: A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
이번에는 A + B다. 쉽지~~~ 이거는 자바랑 C++할때도 너무 쉽게 했다.
...
잠시만... 모르겠다. 뭔가 알 것 같은데 모르겠어.
그래서 한번 찾아보니 변수를 각각 만들어 넣어주는 것은 똑같았다. 입력받은 것을 배열처럼 쓸 수 있나보다. 그리고 JavaScript는 문자열로 받으니까 parseInt 또는 Number을 통해 정수로 바꿔주고 덧셈을 수행하면 된다.
[참고] https://velog.io/@yeoni/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B0%B1%EC%A4%80-1000-javascript
const fs = require('fs');
// 백준에 제출할 때 써야하는 것
const readFileSyncAdress = '/dev/stdin';
//const readFileSyncAdress = 'input.txt';
let input = fs.readFileSync(readFileSyncAdress).toString().trim().split(' ');
let A = parseInt(input[0]);
let B = parseInt(input[1]);
console.log(A+B);
문제 1001번
https://www.acmicpc.net/problem/1001
1001번: A-B
두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
1000번 문제에서 출력해줄때 +를 -로만 바꾸면 성공~!
문제 10998번
https://www.acmicpc.net/problem/10998
10998번: A×B
두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
1000번 문제에서 출력해줄때 +를 *로만 바꾸면 성공~!
문제 1008번
https://www.acmicpc.net/problem/1008
1008번: A/B
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
1000번 문제에서 출력해줄때 +를 /로만 바꾸면 성공~!
문제 10869번
https://www.acmicpc.net/problem/10869
10869번: 사칙연산
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
... 사실 지금까지 너무 쉬워서 이건 넘어갈까 했는데 안 넘어가고 풀었다.
... 틀렸다. 내 꼼꼼한 성격아 잘했어...
왜 그러지???
뭐가 문제야!!!!
이러고 보니 나눗셈을 했을 때 몫을 정수만 출력해야하기 때문에 소수점을 없애주어야 한다는 것이었다.
Math.floor()를 사용하여 소수점 이하를 버림하면 될 것 같다.
참고로 Math.ceil()은 소수점 이하를 올림, Math.round()는 소수점 이하를 반올림한다.
[참고] https://tonks.tistory.com/138
const fs = require('fs');
// 백준에 제출할 때 써야하는 것
const readFileSyncAdress = '/dev/stdin';
//const readFileSyncAdress = 'input.txt';
let input = fs.readFileSync(readFileSyncAdress).toString().trim().split(' ');
let A = parseInt(input[0]);
let B = parseInt(input[1]);
console.log(A+B);
console.log(A-B);
console.log(A*B);
console.log(Math.floor(A/B));
console.log(A%B);
이 분은 보니까 이런 식으로 작성하셨다. map이 뭔지 보니까 어떤 배열에 있는 모든 요소들의 값을 변경해서 만든 새로운 배열을 써야 할 때 루프를 사요아여 배열에 대해 수동으로 반복 처리하는 대신 간단히 해주는 함수이다.
const fs = require('fs');
const inputData = fs.readFileSync('/dev/stdin').toString().split(' ').map(Number);
const A = inputData[0];
const B = inputData[1];
console.log(A+B);
console.log(A-B);
console.log(A*B);
console.log(parseInt(A/B));
console.log(A%B);
출처: https://velog.io/@rkio/%EB%B0%B1%EC%A4%80-Javascript-10869
[참고] https://www.freecodecamp.org/korean/news/javascript-map-method/
으... 졸려 여기까지만 하자...
마지막으로 var, let, const 차이를 설명하고 끝내겠다.
- var
var 선언은 전역 범위 혹은 함수 범위로 지정
var 변수는 재선언되고, 업데이트 가능
만약 코드의 다른 부분에서 해당 변수를 사용한 적이 있다면 많은 버그를 발생시킬 수 있기 때문에 let과 const가 필요
- let
블록은 {}로 바인딩된 코드 청크인데, let 선언은 해당 블록 내에서만 사용 가능
let은 업데이트될 수 있지만, 재선언은 불가
- const
const로 선언된 변수는 일정한 상수 값 유지
let 선언처럼 const 선언도 선언된 블록 범위 내에서만 접근 가능
const는 업데이트도, 재선언도 불가
[참고] https://www.freecodecamp.org/korean/news/var-let-constyi-caijeomeun/
그럼 모두들 새해 복 많이 받으세요~~~!!
'백준 > JavaScript' 카테고리의 다른 글
[JS] 백준 입출력과 사칙연산 - 세 번째 이야기 (0) | 2024.01.03 |
---|---|
[JS] 백준 입출력과 사칙연산 - 두 번째 이야기 (4) | 2024.01.02 |
[JS] 백준 1181번 단어 정렬 (2) | 2023.12.31 |
[JS] 백준 1427번 소트인사이드 (2) | 2023.12.30 |
[JS] 백준 2750번 수 정렬하기 (2) | 2023.12.29 |