메가바이트 스쿨 5주차 (1/10) Coding Test, Javascript

정영찬·2023년 1월 10일
0
post-thumbnail

TIL

Coding Test

16일차 문제풀이 완료

  • 직사각형 넓이 구하기
  • 캐릭터의 좌료
  • 최댓값 만들기 (2)
  • 다항식 더하기

다항식 더하기 문제

링크 : 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)
  }
 
}
  

입력값이 문자열로된 다항식이기 때문에 이를 하나하나 뜯어서 계수에 해당하는 요소와 상수항에 해당하는 요소를 나누어서 경우에 따라 다른 값이 반환 되도록 작성함

  • split()을 사용해서 문자열을 " + " 을 기준으로 분리함. + 양옆에 공백을 추가하는것이 중요!
  • for of 문을 사용해서 각각의 요소가 계수인지 그냥 상수항인지를 확인하고 그에 따라 bsnum값을 증가시킨다.
  • 최종적으로는 계수가 0일때, 계수가 1일때, 2 이상일때를 나누어서 반환되는 값을 따로 지정했다.

if, else if를 써서 조금 지저분한 느낌이었지만, 다른사람들은 어떤 방식으로 풀었는지 한번 공유해보고 싶다.

Javascript

Array

.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
profile
개발자 꿈나무

0개의 댓글