일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 음악검색기능 #음악찾기기능 #음악찾기 #음악검색 #네이버음악검색 #다음음악검색 #멜론음악검색
- fadeint
- React
- ThemeProvider
- 좌우슬라이드
- 파비콘 #파비콘만들기 #포토샵파비콘
- 티스토리 #폰트변경 #꾸미기
- 오류
- 문자열다루기
- 자바스크립트 #메뉴만들기
- 요일구하기
- 숫자게임만들기
- darkmode
- hover효과
- array #object #lodash #javascript
- 프로그래머스
- 윈도우10캡쳐 #윈도우10캡처 #윈도우10스크린샷 #캡쳐하기 #캡처하기 #스크린샷찍기 #캡쳐지연 #스크린샷지연
- GIT
- 메뉴
- 동영상다운 #영상다운 #크롬웹스토어 #드래그되지않는 #클릭되지않는 #동영상
- list추가하기
- fade-in
- 네트워크 #5G안터질때 #4G로바꾸는법 #5G를4G로 #5G를LTE로 #갤럭시5G변경
- todolist
- 가장작은자연수
- 리액트
- 카카오톡알림설정 #카톡알림설정
- 요일구하는공식
- 슬라이드다운
- 자바스크립트
Archives
- Today
- Total
잿꽃's posting Garden
프로그래머스에서 코딩테스트 연습8 - H-Index 구하기 본문
임의의 배열에서 n의 숫자 이상의 숫자의 개수가 n개 이상일 때 최댓값 n을 구한다.
ex) [1,2,4,6,7]의 최대값은 3
3이상 숫자 [4,6,7] 이고 length 3이기 때문에 최댓값은 3
사실 프로그래머스에 나온 예시가 한 개밖에 없어서 이해를 잘 못했음;;
배열 내에 있는 숫자가 그 숫자 이상의 숫자 개수라고 이해했는데 질문하기 보니까 배열 내에 있는 숫자가 아닌 그 사이 값이 될 수 있다고 말해줘서 알았다.
function solution(citations) {
var answer = [];
let result = 0;
let filters;
for(index in citations){
filters = citations.filter(item => item >= citations[index]);
citations[index] <= filters.length? answer.push(citations[index]) : null;
}
result = Math.max(...answer)? Math.max(...answer) : 0;
return result;
}
결과는 11번 16번만 성공...ㅋㅋㅋㅋ
질문하기에 나온 내용을 토대로 코드를 수정했다.
function solution(citations) {
var answer = [];
let result = 0;
let filters;
// 0부터 배열의 max값에 도달할 때까지 반복
for(let i = 0; i < Math.max(...citations); i++){
// filters에 i보다 큰 값만 넣는다.
filters = citations.filter(item => item >= i);
// filters의 길이가 i의 값보다 큰 지 확인하고 크면 push한다.
i <= filters.length? answer.push(i) : null;
}
// [0, 0, 0]일 경우 위의 for()문이 해당하지 않으므로
// Math.max()의 값이 0이 아니면 true로 판별할 것이므로 위의 값을 이용하고
// Math.max()의 값이 0이면 false로 판별하므로 값으로 0을 넣어준다.
result = Math.max(...citations)? Math.max(...answer) : 0;
return result;
}
[0,0]의 경우를 생각못해서 16번 빼고 다 성공했었다.
전개 연산자를 이용하면 string이나 배열로 되어있는 값을 숫자 계산을 할 수 있게 하므로 잘 기억해둬야겠다.
또는 배열이 아닌 String, Number속성을 String(), Number()메소드가 아닌 +"", *1을 통해서도 형변환이 가능하다는 점.
이제 난이도 2를 풀고 있는데 2중에서도 쉬운 문제였던거 같다. 원래 이 문제가 시간이 오래 걸릴 수밖에 없는 건지 아니면 내가 오래 걸리게 코드를 짠 건지는 모르겠지만 실행시간을 더 줄이는 방법을 고민해봐야겠다.
728x90
'WEB > 코딩테스트 연습' 카테고리의 다른 글
프로그래머스에서 코딩테스트 연습9 - 영어 끝말잇기 (0) | 2022.05.27 |
---|---|
프로그래머스에서 코딩테스트 연습7 - 문자열 다루기 기본 (0) | 2022.05.18 |
프로그래머스에서 코딩테스트 연습6 - 2016년 요일 구하기 (0) | 2022.05.17 |
프로그래머스에서 코딩테스트 연습5, 6 - 짝수와 홀수, 수박수박수 (0) | 2022.05.16 |
프로그래머스에서 코딩테스트 연습4 - 두 개 뽑아서 더하기 (0) | 2022.05.15 |
Comments