📖  문제

https://programmers.co.kr/learn/courses/30/lessons/77484

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

💻  코드

def solution(lottos, win_nums):
    score_board = {6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6}
    hit = 0
    for lotto in lottos:
        if lotto in win_nums:
            hit += 1
    unknown = lottos.count(0)
    min_hit = hit
    max_hit = unknown + hit
    return [score_board[max_hit], score_board[min_hit]]

 

🙌  한마디

평범한 구현 문제였다. 때론 이렇게 무난해 보이는 문제가 이상하게 어렵게 느껴질 때가 있다. 예전에 풀었던 프로그래머스 '압축' 문제와 이 문제가 그러했다. 왜 그럴까 고민해봤는데, 처음에 어떻게 구현할지 구상하는 단계에서 좀 더 신중해야지 못해서라고 판단했다. 잘못 짜거나 허점이 있는 로직을 고수하며 거기에 매몰되서 억지로 끼워 맞추다 보면 시간은 흐르고, 마음이 촉박해지면서 자꾸 말리는 그런 상황이 발생하더라.

 

이럴 때일 수록 되새겨야 할 것은, 어차피 구현 문제는 구현만 잘하면 다 풀린다. 즉 특정한 알고리즘 지식이 요구되지 않는다.

 

구현 문제가 안 풀릴 때는 아래 4가지 경우 중 하나이다.

 

1. 로직을 짜는 아이디어가 올바르지 않다.

2. 구현된 코드 일부분이 부적절하다.

3. 놓친 요구사항이 있다.

4. 단순 실수다.

 

보통 코드를 다 짜고 제출했는데 틀리면 4->3->2->1 순으로 체크를 한다. 그렇기에 1번 또는 2번 케이스의 경우 올바르게 고치는데 시간이 더 걸린다. 이 문제와 '압축' 문제 모두 1번, 2번에서 문제가 발생한 케이스였다.

 

이 점에 유의하면서 구현 문제를 더 수월하게 풀 수 있도록 하자.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기