코딩테스트(JS)/구현&문자열
[javascript] 프로그래머스 / 전국 대회 선발 고사 / lv0
seseyeyo
2023. 10. 30. 23:24
function solution(rank, attendance) {
let answer = 0;
let cnt = 0;
let mul = [10000, 100, 1];
for (let i = 1; cnt < 3; i++) {
let idx = rank.indexOf(i);
if (attendance[idx]) {
answer += idx * mul[cnt];
cnt++;
}
}
return answer;
}
정답을 푼 후에 다른 분들의 풀이를 보니 sort와 filter를 많이 이용하셨다..
나는 일단 이렇게 해결하였다.
먼저 rank안에서 i의 인덱스를 찾아 idx에 저장해준다.
attendance[idx]가 true이면 answer에 idx * mul[cnt]를 더해준다. (곱해줄 수들을 담을 배열을 mul안에 따로 넣어주었다)
그리고 cnt를 증가시켜 준다.
for문을 cnt가 3보다 작을 때까지만 진행시켜준다.
function solution(rank, attendance) {
let cnt = 0;
let arr = [];
for (let i = 1; cnt < 3; i++) {
let idx = rank.indexOf(i);
if (attendance[idx]) {
arr.push(idx);
cnt++;
}
}
return arr[0] * 10000 + arr[1] * 100 + arr[2];
}
살짝 다르게 바꿔보았다.
sort랑 filter등을 쓰는 게 더 효율적인 방법인지는 모르겠다!