whatisthis?
❌백준 2588 javascript (node.js) 풀이 본문
입출력과 사칙연산 - (11)
💡문제
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
📁입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
📈출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
< 코드 >
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const A = input[0];
const B = input[1];
const one = B % 10;
const ten = Math.floor((B % 100) / 10);
const hundred = Math.floor(B / 100);
console.log(A * one);
console.log(A * ten);
console.log(A * hundred);
console.log(A * B);
** 참고 **
javascript에서는 *(곱셈) 연산자는 string으로는 할 수 없으므로
자동으로 string->number로 계산해준다! 참으로 친절한 언어이다 :)
- 더하기의 경우에는 "2"+"3" = 23 이 가능하지만
- 곱셈은 "2" * "3" = 6으로 자동으로 바꿔서 처리함.
아무리 해도 안나와서 결국 구글링해서 풀었다.
너무 무지성으로 무턱대고 풀었던 것 같아 반성중..
*** 내가 헤맸던 이유. 💢💢💢
1. 문제를 제대로 안읽었다.
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
입력 조건을 제대로 안보고 한자리씩 입력하는 줄 알고 이렇게 풀었었다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
const [A,B,C,D,E,F] = input;
console.log((100*A+10*B+C)*F);
console.log((100*A+10*B+C)*E);
console.log((100*A+10*B+C)*D);
console.log((100*A+10*B+C)*(100*D+10*E+F));
2. Math.floor 까지는 접근했으나 그 이후에 막혔다.
우선 두번째 수인 B의 각 자리를 나눠야겠다! 까지는 생각했는데
그 이후에 그걸 하기위해
ㄴ 혹시 문자열로 바꾼다음에 나눠야하나?
ㄴ split으로 나눈다면, 무슨 기준으로 나누지? 띄어쓰기를 기준으로 나눌수도 없으니.
ㄴ 그럼 숫자상태에서 처리해야하나보다.
ㄴ 반올림 Math 메소드들을 이용하자
ㄴ 뭔가 내림이 필요할 것 같으니 Math.floor이구나.
472를 기준으로 생각하면
472 / 100 = 4.72 이고
Math.floor(4.72) = 4이다. 이게 백의자리수구나.
ㅡ까지는 생각을 했는데
일의자리는
472 - (Math.floor(472/10)*10)
= 472 - 470 = 2
이렇게 생각했다.
아무리 생각해도 너무 복잡+굳이? 싶은 코드였다.
암튼 일의자리는 생각까진 했는데
십의자리에서 막혔다.
십의자리는
(472 - 400 - 2) / 10 을 해야한다고 생각했다.
그러면 코드가 매우 복잡해지고.. 효율도 떨어지고..
여기서 영 아니다 싶어서 포기하고 구글링함.
3. 나머지 연산자를 아예 생각 못함.
나머지 연산자가 해결사였는데,
그냥 무턱대고 나누기와 곱셈/ 뺄셈만으로만 하려니까
(472 - 400 - 2) / 10
이따구의 코드만 생각났다.
나머지(%) 연산자 이용하면
1의자리 ) 472 % 10 = 2
10의자리 ) Math.floor(472 % 100 / 10) = Math.floor(7.2) = 7
100의자리 ) Math.floor(472 / 100) = Math.floor(4.72) = 4
이렇게 쉬운데 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,
그냥 너무 1차원적으로만 생각한 것 같다.
...
'ALGORITHM > BOJ (Node.js)' 카테고리의 다른 글
백준 9498 javascript (node.js) 풀이 (0) | 2021.12.06 |
---|---|
백준 1330 javascript (node.js) 풀이 (0) | 2021.12.06 |
백준 10430 javascript (node.js) 풀이 (0) | 2021.12.06 |
백준 10869 javascript (node.js) 풀이 (0) | 2021.12.06 |
백준 1008 javascript (node.js) 풀이 (0) | 2021.12.06 |