일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 2주 프로젝트
- 손에 익히며 배우는 네트워크 첫걸음
- 4주 프로젝트
- 제로초
- js
- 알고리즘
- 자바스크립트
- til
- SQL 고득점 Kit
- codestates
- 백준
- programmers
- 코어 자바스크립트
- 파이썬
- 리트코드
- 토익
- 렛츠기릿 자바스크립트
- 회고
- javascript
- 타입스크립트 올인원
- python
- 타임어택
- LeetCode
- 리액트
- 코드스테이츠
- Async
- 리덕스
- 프로그래머스
- 타입스크립트
- 정재남
Archives
- Today
- Total
Jerry
[Programmers] 완주하지 못한 선수 (JavaScript) 본문
Problem Solving/Algorithm 문제 풀기
[Programmers] 완주하지 못한 선수 (JavaScript)
juicyjerry 2020. 12. 20. 01:22반응형
오늘 프로그래머스에서 푼 문제는 "코딩 테스트 연습 -> 해시"로 들어가 푼 문제다.
참가자 그룹 배열이 있고, 참가자 중 완주한 그룹 배열이 있다. (문제는 여기!!)
그 중, 한 명은 완주를 못 한 사람이 발생하는데 이를 구하는 문제라고 해석했다.
수도 코드
p = 참가자
cp = 완주한 참가자
cp.length === p.length - 1
바깥 for문
cnt = 0;
안쪽 for문
if (만약 Cp가 p와 같고, cnt 가 0일 때) {
cnt++
참가자를 삭제한다
}
결국, 남는 참가자는 1명
return p[0];
소스 코드
function solution(participant, completion) {
let answer = '';
for (let j = 0; j < completion.length; j++) {
let cnt = 0;
for (let i = 0; i < participant.length; i++) {
if (participant[i] === completion[j] && cnt === 0) {
cnt++;
participant.splice(i, 1);
}
}
}
answer = participant[0];
return answer;
}
채점을 돌려봤다.
프로그래머스를 처음 써보긴 했는데 테스트 항목이 나눠져 있는 것을 보고 살짝 당황했다. (사실은 효율성 항목이 다 빨간불이라 당황쓰..)
그래서, 이에 대해 찾아보니
코딩 테스트의 경우 [정확성]과 [효율성]으로 구분해서 점수를 계산합니다.
[정확성] 테스트는 지원자가 제출한 코드가 문제 지문을 충분히 구현하고 있는지를 평가하며, [효율성] 테스트는 코드의 시간 복잡도(코드가 문제를 해결하는데 걸린 시간이 충분히 빠른지)를 테스트합니다.
라고 한다.
"아.. 난 시간 복잡도 측면에서 부족했구나"라고 셀프 피드백을 받을 수 있었다.
내일 다시 다시 풀어보고 보충해보겠다.
출처: 프로그래머스 코딩 테스트 연습,
programmers.co.kr/learn/courses/30/lessons/42576?language=javascript
반응형
'Problem Solving > Algorithm 문제 풀기' 카테고리의 다른 글
프로그래머스 자바스크립트 - 3진법 뒤집기 (0) | 2021.06.13 |
---|---|
[프로그래머스 / 자바스크립트]문자열 압축 (0) | 2021.06.10 |
[HackerRank] Compare the Triplets.js (JavaScript) (0) | 2020.11.09 |
[HackerRank] Compare the Triplets (JavaScript) (0) | 2020.11.08 |
[HackerRank] Simple Array Sum (JavaScript) (0) | 2020.11.08 |