꾸준하게
[JS코테] 모의고사 - 다시 확인❗ 본문
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[나의 풀이]
function solution(answers) {
const onePick = [1, 2, 3, 4, 5];
const twoPick = [2, 1, 2, 3, 2, 4, 2, 5];
const thrPick = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let correctArr = [0, 0, 0];
for(let i = 0; i < answers.length; i++) {
answers[i % onePick.length] === onePick[i] && correctArr[0]++;
answers[i % twoPick.length] === twoPick[i] && correctArr[1]++;
answers[i % thrPick.length] === thrPick[i] && correctArr[2]++;
}
const maxNum = Math.max(...correctArr);
return correctArr.map((item, index) => item === maxNum ? index+1 : 0).filter(item => item !== 0);
}
나의 첫 번째 풀이는 채점 결과 실패했다.
내일 다시 풀어보자.
.. 결국 며칠째 풀어보다가 포기했다.
다른 사람들의 풀이를 분석해보자!
[다른 풀이]
function solution(answers) {
var answer = [];
const man1 = [1, 2, 3, 4, 5];
const man2 = [2, 1, 2, 3, 2, 4, 2, 5];
const man3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let count = [0, 0, 0];
for(let i = 0; i < answers.length; i++) {
if(answers[i] == man1[i % man1.length]) count[0]++;
if(answers[i] == man2[i % man2.length]) count[1]++;
if(answers[i] == man3[i % man3.length]) count[2]++;
}
const max = Math.max(count[0], count[1], count[2]);
for(let i = 0; i < count.length; i++) {
if(max == count[i]) answer.push(i + 1);
}
return answer;
}
일단 내 풀이와 매우 흡사해보인다.
내 풀이를 여러 방면에서 수정해본 결과, 내 풀이와 저 풀이의 차이는
중간 for문 안에 있는
answers[i % onePick.length] === onePick[i] && correctArr[0]++;
answers[i % twoPick.length] === twoPick[i] && correctArr[1]++;
answers[i % thrPick.length] === thrPick[i] && correctArr[2]++;
이 부분과
if(answers[i] == man1[i % man1.length]) count[0]++;
if(answers[i] == man2[i % man2.length]) count[1]++;
if(answers[i] == man3[i % man3.length]) count[2]++;
이 부분이었다.
즉, 나는 배열 answers의 index에서 각각 세 배열의 길이를 나눈 나머지와 그 배열의 index가 같으면 count를 했고,
다른 풀이는 각 세 배열의 index에서 그 배열의 길이를 나눈 나머지와 answers의 index가 같으면 count를 했다.
이 문제로 너무 오랜 시간 고민해서 다른 문제를 풀며 조금 머리를 식힌 후 다시 와야겠다.
...그럴거면 답 보지 말걸..!!!!
어쨌든 다음에 다시 확인하기!
728x90
반응형
'JS코딩테스트' 카테고리의 다른 글
[JS코테] 기사단원의 무기 - 다시 풀기❗ (1) | 2024.01.29 |
---|---|
[JS코테] 소수 만들기 - 리팩토링해보기❗ (0) | 2024.01.13 |
[JS코테] 2016년 (2) | 2024.01.02 |
[JS코테] 과일 장수 (0) | 2023.12.26 |
[JS코테] 카드 뭉치 (0) | 2023.08.29 |