Programmers/프로그래머스-N으로 표현-python
📖 문제
🎈 풀이
- 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식으로 바꿔풀면 반복문의 횟수를 줄일 수 있다고 생각했었는데, 이런 식으로 구현해낸 것 같다.
- 위의 코드도 그렇고 이 코드도 그렇고 이런 규칙...을 찾아내고 생각해낸 것들이 정말 멋있는 것 같다..
- 나도 정말 잘해지고 싶다고 생각했다.
💡 문제 출처
프로그래머스