어떠한 문제를 풀면 10점을 준다는 소식?을 듣고 저도 바로 그 문제에 도전하였어요!
사실.. 문제도 짧고 간단해 보이길래 무슨 문제야 있겠어 싶었는데 약 한 시간 만에 제 코드의 문제를 Chat gpt에게 물어보고 해결했습니다.....
이것이 오늘 제가 해결한 문제였는데요..
솔직히 너무 짧고 문제가 간단해 보이잖아요? ^3^ 그래서 만만하게 보았나 봅니다.....
저의 코드는 매우매우 더럽달까요. .
function solution(array, n) {
var answer = 0;
var closer = [];
for(let i of array) {
closer.push(Math.abs(n - i));
}
var mis = Math.min(...closer);
var misss = [];
for(let j=0; j<closer.length; j++) {
if(closer[j] === mis) misss.push(array[j]);
}
answer = Math.min(...misss);
return answer;
}
제가 쓴 코드를 설명해 보자면 우선 첫 번째 for 문을 돌려서 주어진 정수 n과 그 요소들의 차이를 절댓값으로 closer 라는 배열에 넣어주었습니당.
그리고 그 값들 중 최솟값을 mis 라는 변수에 넣어주었어요.
근데 이 다음부터 슬슬 모르겠는 거예요. . 최솟값을 구했는데 그건 차이의 최솟값이고 이 요소를 어떻게 가져와야 하나해서 indexOf 를 사용했는데 자꾸 테스트케이스가 실패해서. . 화가 나더라구요. .
그래서 GPT 한테 물어봤더니 제가 그 차이가 똑같을 때 어떻게 할지를 안 정했다는 거예요!
저는 그런 말이 문제 설명에 없길래 고려 안 해도 되는 줄 알았는데 솔직히 없으면 다 고려해야 하는 거잖아요. .
제 생각이 짧았다고 생각이 들어 이러한 코드를 어떻게 짤지 구상하다가 GPT가 힌트를 주어서 misss 라는 배열을 생성하고 for 문을 또 돌려서 만약!!!!!!! closer 배열의 최솟값 즉, mis 가 closer[j] 와 같다면 우선 그것들은 answer 에 리턴될 확률이 있는 숫자들이에요!
그래서 이 방 번호에 해당하는 array 를 드디어 가져와줬습니다.
만약 차이가 같다면 misss 배열에는 몇 개고 들어가겠죠? 근데 저희는 그 중에서도 가장 작은 값을 구해야 하기 때문에!
마지막에는 answer 에 Math.min(...misss); 를 사용해서 그 중에서도 가장 최솟값을 구하도록 하였습니다.
솔직히 여기까지 생각이 미치진 못 해서. . 더 생각을 깊게 해야겠다고 느끼기도 했고 내가 고민할 시간이 충분했나. . 이런 생각도 들었습니닷!
아무튼 오늘 코테는 내일 다시 풀어보는 것으로~! 마무리이 ^o^
'레쭈고 코테' 카테고리의 다른 글
코딩 테스트 - 50 (0) | 2024.08.26 |
---|---|
코딩 테스트 - 49 (0) | 2024.08.23 |
코딩 테스트 - 47 (0) | 2024.08.12 |
코딩 테스트 - 46 (2) | 2024.07.20 |
코딩 테스트 - 45 (0) | 2024.07.18 |