레쭈고 코테

코딩 테스트 - 48

정땅미 2024. 8. 19. 23:36

어떠한 문제를 풀면 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