-
[백준 Node.js] 2908번 상수To infinity/Coding Practice 2021. 6. 26. 16:29
2021.06.26
Question
Answer code
let fs = require('fs'); let input = (process.flatform == 'linux' ? fs.readFileSync('/dev/stdin').toString() : `734 893`.split('')); console.log(input) // ['734', '893'] //input.split('') //가 안됐던 이유는 split는 stirng 메서드임!! //let reverse = input.reverse() //아 숫자가 아니고 배열 순서를 reverse하는거구나 //console.log(reverse) //그럼 배열로 만들어서 reverse시키면 되지 않을까 let reverse = input.reverse().join('').split(' ') //Array_join('')을 하게되면 콤마로 기본적으로 합쳐짐. console.log(reverse); let max = Math.max(...reverse) //스프레드문법, 함수호출문의 인수목록에서 사용하는 경우 console.log(max);
How to solve?
reverse와 join, split, max 메서드를 활용해서 풀었다.
내가 문제를 계속 풀면서 알게된건데 내가 실수를 저지르는 부분이 바로 타입별 메서드를 아직 정확히 모른단 것이다.
이 이전부터 계속 에러가 나는데 대체 로직을 보면 뭐가 에러인지 모르겠는 것들이 있었는데
확인해보니까 Array인데 String 메서드를 사용하는 등의 실수였다.
reverse, join은 Array 메서드이고
split는 String 메서드다.
근데 나는 Math메서드를 쓸 때 타입이 string이어서 연산이 안될 줄 알았는데 값이 나왔다.
혹시나 해서 테스트케이스 만들어서 계산 해봤는데 역시 답이 나왔다.
Math메서드는 암묵적으로 타입을 Number로 바꾸나보다.
그리고 배열은 Math.max.apply([배열])를 써줘야하지만
스프레드문법으로 쓸때는 Math.max(...[배열])로써주면 된다.
Reference
'To infinity > Coding Practice' 카테고리의 다른 글
[백준 Node.js/Javascript] 5622번 다이얼 (0) 2021.06.27 [백준 Node.js] 1157번 단어공부 (0) 2021.06.26 [백준 Node.js] 10809번 알파벳 찾기 (Feat. 아스키코드) (0) 2021.06.26 [백준 Node.js] 11720번 숫자의 합 (0) 2021.06.26 [백준 Node.js] 1065번 한수 (0) 2021.06.26