-
이 코드가 맞을까? 틀릴까? 로또 순위 예측해보자개발공부 2025. 2. 11. 12:02
로또 당첨번호 비교, 어떻게 해야 할까?
로또 번호랑 당첨 번호를 비교해서 최저 순위랑 최고 순위를 구하는 문제.
어떤 방법이 있을까 생각해봤다.
- forEach
- map
- for 문
스쳐 지나가긴 했지만, 바로 forEach로 결정.
왜?
for 문을 쓰면 2중 for 문을 돌려야 할 것만 같았고,
map을 쓰면 배열 크기가 변하지 않아서 문제랑 안 맞아 보였기 때문.그래서 처음 짠 코드가 이거다.
function solution(lottos, win_nums) { let high = 7 let low = 7 lottos.forEach(number => { if (number === 0) { return ++high } if (win_nums.includes(number)) { high++ low++ } }) return [high, low]; }
결과? 틀렸다.
순위는 6부터 시작하는데, 나는 +를 하고 있었다.
"아, 반대로 해야겠네."바로 -로 바꿨다.
function solution(lottos, win_nums) { let high = 7 let low = 7 lottos.forEach(number => { if (number === 0) { return --high } if (win_nums.includes(number)) { high-- low-- } }) return [high, low]; }
이제 됐을까?
아니다.
이 코드, 6등일 때 7이 출력되는 버그가 있었다.왜 그럴까?
로또 최저 순위가 6등인데, 나는 7등이 나올 수도 있는 코드를 짰다.
바로 잡아야 했다.그래서 조건 추가!
function solution(lottos, win_nums) { let high = 7 let low = 7 lottos.forEach(number => { if (number === 0) { return --high } if (win_nums.includes(number)) { high-- low-- } }) return [high === 7 ? 6 : high, low === 7 ? 6 : low]; }
이제야 문제 해결.
결론
- forEach 써도 충분했다.
- -를 해야 하는데 +를 했던 실수.
- 6등이면 7등이 되지 않도록 조정 필요.
오늘의 교훈: "당첨번호 비교도 코드 설계부터 제대로 하자."
'개발공부' 카테고리의 다른 글
팀 프로젝트 시작했는데, GitHub가 이렇게 빡세다고? (0) 2025.02.13 이제 백엔드는 만들 필요 없다? Supabase로 개발 속도 올리는 법 (0) 2025.02.12 Vercel은 내 로컬 이미지를 싫어한다? (0) 2025.02.10 React useSearchParams 사용 시 발생한 검색 오류와 해결 과정 (0) 2025.02.07 React Context 적용 시 함수 이동 문제와 이벤트 전파 문제 해결 (0) 2025.02.06