[JS100제] 문제34 : sort 구현하기

youngseo·2022년 2월 17일
0

JS100제

목록 보기
18/25
post-thumbnail

문제34 : sort 구현하기

민주는 체육부장으로 체육시간이 되면 반 친구들이 제대로 키 순서대로 모였는지를 확인해야 한다. 그런데 요즘 민주는 그것이 너무 번거롭게 느껴져 한 번에 확인하고 싶어한다.

민주를 위해 키가 주어지면 순서대로 제대로 섰는지 확인하는 프로그램을 작성해보자.
(키는 공백으로 구분하여 입력됩니다.)

입출력

입력 : 176 156 155 165 166 169
출력 : NO

입력 : 155 156 165 166 169 176
출력 : YES

my solution

function line(heigth) {
  let arr = heigth.split(' ');
  let arr1 = heigth.split(' ');
  let arr2 = arr.sort((x, y) => (x - y))

  console.log(arr1)
  console.log(arr2)

  if (arr1 === arr2) {
    return 'YES'
  }
  return 'NO'
}

let heigth = '176 156 155 165 166 169'
console.log(line(heigth))

공부필요한 부분: 객체 복사

 let arr = heigth.split(' ');
 let arr1 = arr
 let arr2 = arr.sort((x, y) => (x - y))

위와 같이 코드를 작성하면 arr=arr1=arr2가 된다.

  let arr1 = [...arr]

답안

const unsorted = prompt('키를 입력하세요');
let sorted = "";

sorted = unsorted
  .split(" ")
  .sort(function(a, b) {
    return a - b;
  })
  .join(" ");

if (unsorted === sorted) {
  console.log("Yes");
} else {
  console.log("No");
}

더 알아보기

객체복사 문제점 해결

깊은 복사: for문 이용

let user = {
  name: "Jhon",
  age: 23,
};

let admin = {};

//shallow copy
for (let key in user){
  admin[key] = user[key];
}

admin.name = "park"

console.log(admin.name); // output : "Park"
console.log(user.name); // output : "Jhon"

얕은 복사: Object.assign()

let user = {
  name: "Jhon",
  age: 23,
};

let admin_obj = Object.assgin({}, user);

admin_obj.name="Park";
user.age=30;

console.log(admin_obj.name); // output : "Park"
console.log(user.name); // output : "Jhon"
console.log(admin_obj.age); // output : 23
console.log(user.age); // output : "30

얕은 복사: 전개 연산자

let user = {
  name: "Jhon",
  age: 23,
};

let admin_spread = {...user};

admin_spread = "park";
user.age = 30;

console.log(admin_spread.name); // output : "Park"
console.log(user.name); // output : "Jhon"
console.log(admin_spread.age); // output : 23
console.log(user.age); // output : "30

0개의 댓글