Programmers/프로그래머스-N으로 표현-python

Ne5s·2022년 9월 6일
0

알고리즘 문제풀기

목록 보기
29/31
post-thumbnail
post-custom-banner

📖 문제

🎈 풀이

  • DP는 진짜 너무너무 어렵다..진짜 혼자 풀다가 시간이 많이 지나면 내가 바보인가 생각이 든다..ㅠㅠ
  • 결국 검색해서 힌트를 얻고 문제를 풀었다.
  • dp list를 return의 길이가 1일 때부터 8까지의 올 수 있는 값들을 저장하기 위해 만들었다.
  • 연산을 통해 만들어진 수가 중복되지 않도록 set으로 check_list를 만들었고,
    기본적으로 return의 길이만큼의 N을 반복해서 만들어진 수가 들어갈 수 있도록 add해주었다.
  • 여기 수식이 되게 복잡하였는데, 참고했던 코드가 정말 신박하였다.
  • 22번째 줄의 for문이 range(0, i-1)로 작성되어있어 왜 이렇게 했을까 그냥 range(i)로 해도 되지않나 싶었는데.. range(i)로 하게되면 i가 1일 때 반복을 1번 돌게된다...!!
    range(0, i-1)을 쓰게되면 i가 1일 때 저 반복문을 돌지 않게된다...!헉..
    결국 i가 1일 때는 N을 그대로 dp에 넣어주고 반복이 끝나고 다음 i로 가게된다.
  • 23번, 24번줄의 2중 반복문으로 dp의 배열을 순회하며 i번째 dp의 값을 채우게 된다.
  • dp에 넣기 전 i번째에 올 수 있는 값을 모아둔 check_list에 number가 포함되어 있으면 i를 answer에 넣고 for문을 break한다.
  • answer를 return하며 코드는 종료한다.

💻 코드

✨ 실행 결과

💊 탑👍 코드

  • 처음 내가 생각했던 방식을 구현한 것 같다..
  • i가 5일 때 N 연산 NNNN 의 식에서 x 연산 y, y 연산 x식으로 바꿔풀면 반복문의 횟수를 줄일 수 있다고 생각했었는데, 이런 식으로 구현해낸 것 같다.
  • 위의 코드도 그렇고 이 코드도 그렇고 이런 규칙...을 찾아내고 생각해낸 것들이 정말 멋있는 것 같다..
  • 나도 정말 잘해지고 싶다고 생각했다.

💡 문제 출처

프로그래머스

profile
초보개발자
post-custom-banner

0개의 댓글