일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- gunicorn
- 코딩테스트
- 취준생
- Python
- HTTP/2.0
- HTTP
- Javascript
- CS
- Nginx개념
- IT
- 도커 컨테이너
- 운동
- http 메소드
- 프론트엔드
- HTTP/3.0
- CS기술면접
- HTTP/1.0
- JavsScript
- HTTP/0.9
- 컴퓨터공학과
- HTTP버전
- Jupyter notebook
- docker
- 헬스
- 백준
- 도커기본개념
- 도커명령어
- 컴퓨공학과
- 자바스크립트
- Nginx
- Today
- Total
목록IT/코딩테스트_ (11)
dogo_ day
🔅알고리즘 난이도 Lv. 2 🌈문제풀이 Map객체를 사용할 수 있다면 쉽게 문제를 해결 할 수 있다. 이름의 중복이 없다는 가정하에 이름-가입순서로 Map을 생성한다. 그리고 sort를 사용하여 정렬을 할 때 나이가 같다면 Map객체에서 가입순서를 가지고와서 정렬의 기준으로 삼는다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let n = Number(input[0]); let client = []; for(let i = 1; i { if(a[0] != b[0]) return a[0] - b[0] else return joinMap.get(a[1]) - joinMap.get(b[1]); ..
🔅알고리즘 난이도 Lv. 2 🌈문제풀이 문제를 이해하기가 조금 난해했다. N개의 좌표 Xn을 좌표 압축을 적용했을 때 새로운 좌표 X`n이 생성된다. X'n의 좌표는 새로운 특징을 가지고 있다. X' i번째 좌표의 값은 i번째 X좌표 > j번째 X좌표 를 만족하는 개수이다. 즉, X좌표에서 가장 작은 값은 새로운 좌표에서는 0의 값을 가진다. 그 다음 작은 값은 새로운 좌표에서느 1의 값을 가진다. 정렬을 이용하면 해결할 수 있는 알고리즘이다. Set과 Map을 활용하면 문제를 해결 할 수 있다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let n = Number(input[0]); l..
🔅알고리즘 난이도 Lv. 1 🌈문제풀이 자바스크립트에서 sort()의 시간복잡도는 (nlogn) 이다. sort의 동작 원리(compareFunction)를 알고있다면 응용해서 문제를 해결할 수 있다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort Array.prototype.sort() - JavaScript | MDN sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다. developer.mozilla.org 그리고 결과를 출력할 때 매번 consol..
🔅알고리즘 난이도 Lv. 1 🌈문제풀이 문자열을 반복해서 출력하면 된다. String.prototype.repeat()을 사용하면 쉽게 풀 수 있다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let n = Number(input[0]) let result = '' // R번 반복 for(let i = 1; i
🔅알고리즘 난이도 Lv. 1 🌈문제풀이 문자열에 대한 기본적인 알고리즘이다. 입력받은 문자열에 대해 하나씩 꺼내어 Number형으로 arr배열에 삽입한다. 이후에 reduce를 사용하여 연산 후 출력한다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let n = input[0]; let arr = input[1].split('').map(Number); let summary = arr.reduce((a,b)=>a+b); console.log(summary); for of을 이용하여 풀이할 수도 있다. for...of 의 공식 정의는 다음과 같다. for...of 명령문은 반복가능한 객체(..
🔅알고리즘 난이도 Lv. 1 🌈문제풀이 너무나도 쉬운 문제였다. 하지만 나는 계속 틀렸다.100번을 쳐다봐도 로직에는 문제가 없었다. 그 이유는 바로 파일을 읽어올 때 trim()을 사용하지 않아서 였다. trim()을 사용하지 않으면 공백, 빈문자열에 대한 오류를 걸러내지 못해서였다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); let data = input.map(Number); let mySet = new Set(); for(let d of data){ mySet.add(Number(d) % 42); } console.log(mySet.size);
🔅알고리즘 난이도 Lv. 1 🌈문제풀이 문제해결 아이디어는 간단하다. 하지만 내가 블로그를 쓰는 이유는 배열의 메소드를 무분별하게 사용하면 성능이 안좋다는 것을 알았기 때문이다. 위 문제를 해결하기 위해 배열의 메소드 중 sort를 사용했다. 문제는 해결하였으나 시간측정이 오래걸리는 것 같아 꺼림직해서 sort를 사용하지 않고 했다. (강의 모범답안) 유의미한 시간차이가 있다. 배열의 메소드를 무분별하게 사용하면 안될 것 같다. 참고자료 패스트캠퍼스 - JavaScript 코딩테스트 131개 예재 & CS지식으로 끝내기