아... 정말 요즘 오타 때문에 자꾸 코딩 테스트가 오래걸린다.......
아아악 제발 정신 차려...
문제
오늘은 프로그래머스의 모의고사를 풀었는데, 진짜 계속 안됐다.
문제 경우 1. 모의고사 문제가 수포자 답안보다 수가 많을 경우 / 42.9
처음에 안된 부분은 수포자가 찍는 답안의 수 배열보다 문제답안 배열의 수가 더 많을 때 다시 수포자 답안의 첫 번째 답안으로 돌아가야 하는 부분을 제대로 구현하지 못해서 통과를 못했다.
이 부분은 현재 비교할 번째인 i 를 수포자 답 배열의 수로 나눈 나머지의 값을 구해 그 값을 인덱스로 사용하여 수포자답안의 인덱스와 정답 답안(answers) 의 i 번째와 비교하도록 하였다.
이전에는 수포자 답 배열 length 와 i 가 같으면 i 를 0으로 초기상태로 돌린 후 비교를 하려고 했는데 이게 잘 되지 않았다. 계속 무한 루프를 돌다가 시간 초과로 끝났다. 여기서 42.9점...ㅋㅋㅋ
문제 경우 2. 복붙 이슈... / 50
위의 첫 번째 문제를 해결하고 정말 통과할 줄 알았다. ㅋㅋㅋ
테스트 케이스도 잘 통과하고 보기에도 정말 문제가 없다고 생각되는데 계속 제출만 하면 50점을 맞으면 종료되었다.
정말 왜 안되나 하다가 어떤 사람이 수포자의 답안을 잘 못 넣고 비교했다는 내용을 보게 됐다.
설마 나는 아니겠지..? 하면서 봤는데 2번 수포자의 찍는 방식에 5를 빠트리고 배열을 만든것이였다..... 하....
맞는 배열 : p2:[2, 1, 2, 3, 2, 4, 2, 5],
틀린 배열 :p2:[2, 1, 2, 3, 2, 4, 2],
ㅋㅋㅋ 5까지 복사했어야 하는데 2까지만해서... 통과를 못했던 것이다.
스트레스... 결론적으로..... 이걸 발견하고 통과를 할 수 있었다.
결론 : 정신을 차려..
최종 코드
function solution(answers) {
const answer = [];
const personObj = {
p1:[1,2,3,4,5],
p2:[2, 1, 2, 3, 2, 4, 2, 5],
p3:[3,3,1,1,2,2,4,4,5,5]
};
const resultObj = {
p1:0,
p2:0,
p3:0
};
//for - 수포자 3명
for(const person in personObj){
//for - answers 수
for(let i=0; i < answers.length; i++){
//값 같은지 체크
if(personObj[person][i % personObj[person].length] === answers[i]){
resultObj[person] += 1;
}
}
}
const max = Math.max(...Object.values(resultObj));
//정답자
for(const person in resultObj){
if(max === resultObj[person]){
answer.push(+person.charAt(person.length-1))
}
}
//오름차순 정렬하여 리턴
return answer.sort((a,b) => a-b);
}
제출한 내역
42.9 부분이 1번 문제를 겪었던 시간들.....
50 부분이 2번 문제인 수포자 값을 제대로 복사하지 못한 시간들...
'TIL' 카테고리의 다른 글
react/typescript input checkbox 전체 선택 구현 (0) | 2024.03.29 |
---|---|
[tailwind css] 반응형 및 color 셋팅 (0) | 2024.03.29 |
[supabase] insert, delete 북마크 추가/삭제 (0) | 2024.03.25 |
supabase 테이블 조인하여 조회 / 삭제 (0) | 2024.03.21 |
geolocation, kakao 로컬 rest api 활용 (0) | 2024.03.20 |