
16일차 문제풀이 완료
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120863
function solution(polynomial) {
let lst = polynomial.split(" + ")
let bs = 0
let num = 0
for (let idx of lst){
idx.includes('x') ? idx.length === 1 ? bs+=1 : bs+=Number(idx.substr(0,idx.length-1)) : num += Number(idx)
}
//변수가 없을때
if (bs === 0){
return num === 0 ? "0" : String(num)
}
// 변수가 1일때
else if( bs === 1){
return num === 0 ? "x" : "x" + " "+ "+" + " " + String(num)
}
// 2이상일때
else{
return num === 0 ? bs + "x" : bs + "x" + " " + "+" + " " + String(num)
}
}
입력값이 문자열로된 다항식이기 때문에 이를 하나하나 뜯어서 계수에 해당하는 요소와 상수항에 해당하는 요소를 나누어서 경우에 따라 다른 값이 반환 되도록 작성함
bs와 num값을 증가시킨다. if, else if를 써서 조금 지저분한 느낌이었지만, 다른사람들은 어떤 방식으로 풀었는지 한번 공유해보고 싶다.
.length 배열의 길이(숫자)를 반환한다.
.at() : 대상 배열을 인덱싱한다. 음수값을 사용하면 뒤에서부터 인덱싱 하게 된다.
.concat() : 대상 배열과 주어진 배열을 병합해 새로운 배열을 반환한다.
.every() : 대상 배열의 모든 요소가 콜백 테스트를 통과(참 반환) 하는지 확인한다. 테스트가 실패하게 된다면 콜백은 실행되지 않고 false를 반환한다.
.filter() : 대상 배열에서 콜백 테스트를 통과하는 모든 요소를 새로운 배열을 만들어서 반환한다.
.find() : 대상 배열에서 콜백 테스트를 통과하는 첫번째 요소를 반환한다.
.findIndex() : 대상 배열에서 콜백 테스트를 통과하는 첫번째 요소의 인덱스를 반환한다. 최초로 테스트가 통과된다면, 이후 콜백은 실행되지 않는다. 모든 테스트 실패시 -1을 반환
.flat() : 대상 배열의 모든 하위 배열네 지정한 깊이까지 이어붙인 새로운 배열을 반환한다.
.forEach(): 대상 배열의 길이만큼 주어진 콜백을 실행함
.includes() : 대상 배열이 특정 요소를 포함하고 있는지
.join() : 대상 배열의 모든 요소를 구분자로 연결한 문자를 반환한다.
.map() : 대상 배열의 길이만큼 주어진 콜백을 실행하고, 콜백의 반환 값을 모아서 새로운 배열을 반환한다.
.pop() : 대상 배열에서 마지막 요소를 제거하고 그 요소를 반환한다.
.push() : 대상 배열의 마지막에 하나 이상의 요소를 추가하고 ,배열의 새로운 길이를 반환한다.
.reduce(): 대상 배열의 길이만큼 주어진 콜백을 실행하고 ,마짐가에 호출되는 콜백의 반환값을 반환한다.
.reverse() : 대상 배열의 순서를 반전한다.
.shift() : 대상 배열에서 첫번째 요소를 제거하고 ,제거된 요소를 반환한다.
.slice() : 대상 배열의 일부를 추출해서 새로운 배열을 반환한다. 두번째 인수 직전까지 추출하고, 두번째 인수를 생략할 경우 대상 배열의 끝까지 추출한다.
.some() : 대상 배열의 어떤 요소라도 콜백 테스트를 통과하는지 확인한다.
.sort() : 대상 배열을 콜백의 반환값에 따라 정렬한다.
콜백의 반환값 :
- 음수: a를 낮은 순서로 정렬
- 0 : tnstj qusrud djqtdma
- 양수 : b를 낮은 순서로 정렬
const numbers = [8, 99, 13, 22, 34, 43, 9, 12]
numbers.sort()
console.log(numbers) // [12,13,22,34,43,8,9,99]
numbers.sort((a, b) => a - b)
console.log(numbers) // [8,9,12,13,22,34,43,99]
numbers.sort((a, b) => b - a)
console.log(numbers) // [99,43,34,22,13,12,9,8]
const users = [
{ name: 'Neo', age: 85 },
{ name: 'Amy', age: 22 },
{ name: 'Lewis', age: 11 }
]
users.sort((a, b) => a.age - b.age)
console.log(users) // [ Lewis객체, Amy객체, Neo객체 ]
// users.sort((a, b) => b.age - a.age)
// console.log(users) // [ Neo객체, Amy객체, Lewis객체 ]
.unshift() 새로운 요소를 대상 배열의 맨앞에 추가하고 새로운 배열의 길이를 반환한다. 이때 배열의 원본이 변경된다.
Array.from() : 유사 배열을 실제 배열로 반환한다.
const arraylike = {
0: 'A',
1: 'B',
2: 'C',
length: 3
}
// 현재 객체 데이터
console.log(arraylike.constructor === Array) // false
console.log(arraylike.constructor === Object) // true
// arraylike.forEach(item => console.log(item)) // Error!
Array.from(arraylike).forEach(item => console.log(item))
// 'A'
// 'B'
// 'C'
Array.isArray() : 배열 데이터인지 확인한다.
const array = ['A', 'B', 'C']
const arraylike = {
0: 'A',
1: 'B',
2: 'C',
length: 3
}
console.log(Array.isArray(array)) // true
console.log(Array.isArray(arraylike)) // false