프로그래머스의 lv0 배열 비교하기를 풀었다.
문제는 모두가 알겟지만 문제는
- 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
- 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
가 주어지고 arr1<arr2 => -1, arr1 > arr2 => 1 arr1 = arr2 => 0 을 반환하게 만들면 되는 문제였다.
문제가 긴거 같아서 처음에 그냥 문제대로 if 문을 써서 해보려고 작성했다.
arr1<arr2 => -1, arr1 > arr2 => 1 먼저 하고 arr1 = arr2일때 arr1과 arr2의 합을 구해서 같으면 0 arr1이 크면 1 arr2가 크면 -1을 반환하도록 로직을 구성했고 코드도 작성했다고 생각했다.
그런데 오늘도 코드실행을 하니 통고했는데 코드제출을 하니 틀렸다고 나왔다.
그래서 코드를 조금씩 조금씩 고쳤는데도 계속 같아서 뭐가 문제일까 하고 다른 사람의 풀이를 검색해봤다. 슥 둘러봤을 때 내 코드랑 비슷한거 같아서 if문이 문제 인가 싶어서 삼항연산자로 풀었다.
삼항연산자로 풀다가 arr1 = arr2일때 코드에서 arr1<arr2 일때 -1 아니면 1을 반환하라고만 되어 있는게 문제였다.
arr1.reduce((a,b)=>a+b,0) > arr2.reduce((a,b)=>a+b,0) ? answer = 1 : answer = -1
이 코드가 문제의 코드였는데 이 코드는 arr1이 크다는 잘 나오지만 arr2가 작다와 같다가 포함된 식이었던 거다. 그래서 자꾸 0이 안나오고 -1이 주구장창 나왔던 거고
그래서 코드를 3가지 다 할 수 있게
arr1.reduce((a,b)=>a+b,0) > arr2.reduce((a,b)=>a+b,0) ? answer = 1 : arr1.reduce((a,b)=>a+b,0) == arr2.reduce((a,b)=>a+b,0)? answer = 0 : answer = -1
이렇게 바꿔줌으로써 통과 할 수 있었다.
그런데 기존의 코드를 다시 보니 arr1 = arr2일때 코드에서 arr1<arr2 일때 answer가 -1 아니면 1을 반환 해야 하는데 둘다 1을 반환하고 있었다. 오마갓이었다... 역시 코드 다시보기를 잘 하자...
오늘의 잘 한점
코드를 찬찬히 다시 읽어보고 미흡한 점을 스스로 찾아냈단 것.
오늘의 발전 해야 할 점
문제 낸 대로 코드를 작성해 보기. 예제나 부가적인 설명대로 하는게 아니라 문제의 제일 첫 문장들을 보고 로직을 짜준대로 코드를 작성하기!
'자기개발 > TIL' 카테고리의 다른 글
홀수 vs 짝수 js (0) | 2023.07.25 |
---|---|
l로만들기 js (0) | 2023.07.24 |
공백으로 구분하기2 js로 풀기 (0) | 2023.07.21 |
A강조하기에는 a도 A도 A가 나와야 한다 (0) | 2023.07.20 |
앗차! reduce는 그냥 쓰면 문자열로 만들었지! (0) | 2023.07.18 |