GitHub ID : soohyun-dev
윤수현의 개발 공간
GitHub ID : soohyun-dev
전체 방문자
오늘
어제
  • 분류 전체보기 (918)
    • 성장기록 (49)
      • 성장기록 (3)
      • 우아한테크코스 (16)
      • 프로젝트 (15)
      • TIL (14)
      • 테오의 스프린트 (1)
    • 프로그래밍언어 (88)
      • C언어 (14)
      • HTML\CSS (12)
      • JavaScript (7)
      • React (23)
      • Python (11)
      • JAVA (14)
      • TypeScript (6)
    • 알고리즘 공부 (736)
      • 코드업 - 파이썬 (108)
      • 백준 - 파이썬 (468)
      • 백준 - 자바스크립트 (125)
      • 프로그래머스 - 파이썬 (1)
      • 프로그래머스 - 자바스크립트 (34)
    • 책 리뷰 (9)
      • 프로그래밍 (3)
      • 독서 (6)
    • 전자기기 (1)
    • 일상, 일기 (18)
    • 기술 세미나 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프론트엔드
  • 백준풀이
  • 프로그래밍언어
  • javascript
  • 파이썬
  • 코드업파이썬
  • PYTHON
  • 영어
  • 프로그래머스풀이
  • 코테
  • 영어독해
  • 프로그래머스자바스크립트
  • 코딩테스트
  • 백준파이썬
  • 자바스크립트
  • 독해
  • 프로그래머스
  • 코드업
  • 백준
  • 코딩

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GitHub ID : soohyun-dev

윤수현의 개발 공간

백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1431, 시리얼 번호 [정렬]
알고리즘 공부/백준 - 자바스크립트

백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1431, 시리얼 번호 [정렬]

2022. 9. 6. 18:55

백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1431 , 시리얼 번호 [정렬]

 

 

풀이 시간

 

 

Check Point !   ( 해당사항 ✓체크 )

1. 막힘 없이 수월하게 풀린 문제인가?

2. 1시간이내로 풀렸던 문제인가?

3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

4. 시간을 써도 도무지 풀 수 없는 문제인가?

5. 솔루션을 찾아봤는가?

-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하


<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함


<덧붙일 말>
파이썬으로하면 걍 key=lamda 에 인덱스 담아서 sort 하면 바로 답나오는데
자바스크립트로 다중조건을 처음 접해봐서 스스로 만들어 해볼려니까 너무 오래걸렸다.
이 문제 통해서 다중 조건 정렬을 제대로 익힌듯하다. 
+) 예제,반례 다 잘 돌아가는 계속 11퍼에서 틀리길래 뭔가 겁나 오래 고민했는데, 인덱스 하나를 잘못쓴 어처구니 없는 실수 까지 ㅋ.ㅋ

 

문제 출처

https://www.acmicpc.net/problem/1431

 

1431번: 시리얼 번호

첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어

www.acmicpc.net

 

 

 

풀이

 

이 문제는 다른거 없고 다중 조건 정렬만 할 줄 알면 쉽게 풀릴 것이다.

 

자바스크립트로 다중 조건 정렬을 하는 법을 알아보자.

 

 

 

위의 코드는 오름차순 정렬이다.

 

1번 인덱스를 기준으로 오름 차순을 정렬하고 만약 1번인덱스 값이 서로 같다면 2번인덱스를 기준으로 오름차순으로 정렬하는 코드이다.

 

위 코드만 제대로 이해해도 이제 응용해서 다중 조건 정렬 코드를 제대로 작성할 수 있을 것이다.

 

 

 

 

 

정답

 

 

 

 

const input = require("fs")
  .readFileSync("/dev/stdin")
  .toString()
  .trim()
  .split("\n");

const Check = (C) => {
  const list = [...new Array(C.length)].map(() => []);

  for (let i = 0; i < C.length; i++) {
    let cnt = 0;
    let dic = [];
    list[i].push(C[i], C[i].length);
    for (let j = 0; j < C[i].length; j++) {
      let num = C[i].charCodeAt([j]);
      if (!isNaN(C[i][j])) {
        cnt += Number(C[i][j]);
      }
      dic.push(num);
    }
    list[i].push(cnt);
    for (let k of dic) {
      list[i].push(k);
    }
  }
  return list;
};

// 입력
const T = input.shift().split().map(Number);

arr = [];
for (let i = 0; i < T; i++) {
  arr.push(input.shift().trim());
}

let result = Check(arr);

result.sort((a, b) => {
  if (a[1] < b[1]) return -1;
  if (a[1] > b[1]) return 1;
  if (a[2] < b[2]) return -1;
  if (a[2] > b[2]) return 1;
  let ind = 2;
  while (ind < a.length) {
    if (a[ind] === b[ind]) {
      ind += 1;
    } else {
      if (a[ind] < b[ind]) return -1;
      if (a[ind] > b[ind]) return 1;
    }
  }
});

for (let i of result) {
  console.log(i[0]);
}
반응형

'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글

백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 20291 , 파일 정리 [정렬]  (1) 2022.09.08
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1755 , 숫자놀이 [정렬]  (0) 2022.09.07
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 1946 , 신입 사원 [정렬]  (0) 2022.09.06
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1015 , 수열 정렬 [정렬]  (0) 2022.09.06
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 24479 , 지름길  (0) 2022.09.05
    '알고리즘 공부/백준 - 자바스크립트' 카테고리의 다른 글
    • 백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 20291 , 파일 정리 [정렬]
    • 백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1755 , 숫자놀이 [정렬]
    • 백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 1946 , 신입 사원 [정렬]
    • 백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1015 , 수열 정렬 [정렬]
    GitHub ID : soohyun-dev
    GitHub ID : soohyun-dev
    환영합니다!😊 이곳은 저의 개발에 관한 내용들을 정리하는 공간입니다. 알고리즘 풀이에도 관심이 많아요. 좋은 하루 되세요~! github : soohyun_dev

    티스토리툴바