코딩테스트/프로그래머스

프로그래머스 2021년 8월 5주차 위클리 챌린지 (모음 사전) 파이썬 풀이 코드 (재귀)

RyanKwon 2021. 9. 1. 01:00
728x90

코드만 보고싶은 분은 링크

GitHub - Rhyankwon/algorithms

Contribute to Rhyankwon/algorithms development by creating an account on GitHub.

github.com



오늘은 프로그래머스 21년도 8월 5째주 위클리 챌린지 문제를 해설하려고 한다. 사실 프로그래머스라는걸 알게된 것도 카카오 코딩테스트 준비때문이고 위클리챌린지가 있는지도 몰랐다. 근데 무슨 문제 풀지 고민을 하다가 위클리 챌린지라는걸 봤고, 위클리 챌린지면 그래도.. 나름 퀄리티가 너무 나쁜 문제가 나오진 않을 것 같아서 풀어보게 됐다. 제목은 모음 사전이다. 일단 문제 설명 기

영어 모음 5개를 가지고 만든 사전이 있을 때, 그 안에서 주어진 단어는 몇번째 순서로 오는가? 가 문제이다. 사실 여기서 더 문제를 꼬고 싶었으면 어떻게든 더 꼴 수 있었을텐데 위클리챌린지는 그렇게까지 어렵게 하지는 않는지, 직관적인 문제가 나왔다. 레벨1~5까지 있다면 레벨3는 죽어도 안되고 레벨2정도..의 난이도.

A부터 모음 순서가 나와있으니까 그 모음순서를 미리 함수안에 정의해두고 for문을 써서 그 안에서 재귀호출한다. 이 때 재귀호출하면서 이전의 문자에 새로운 문자를 더한 값을 같이 변수로 보내고 만약 재귀호출시 받은 문자의 길이가 5보다 크면 리턴한다. 그렇게 하면 A AA AAA AAAA AAAAA 순서가 되고 그 다음에 AAAAE AAAAI AAAAO AAAAU AAAE ,,이런식으로 사전식 탐색?이 가능하다. 딱 봐도 재귀풀이를 노린 문제. 다만 사이에 답안을 찾았다고 해서 재귀가 그냥 멈출 수 있는 반복문같은게 아니기때문에 그 처리를 어떻게 하느냐에 따라서 좀 더 식이 간단해질수도 길어질수도 있을 것 같다. 다른 사람들이 쓴걸 보니까 애초에 경우의 수가 제한돼있다보니 그냥 전체 조합을 다 만든다음 탐색하는식으로 해도 된다고 하는데, 그래서 사실 사이에 답을 찾을 시 재귀함수를 종료하는 조건같은걸 안 넣어도 적당하게 답을 낼 수 있을 것 같긴 하다. 아무튼 나는 리스트에 계속 후보를 넣는 방식으로 해서 원하는 답이 나왔을 때 리스트에 값 넣는걸 멈추고, 마지막에 그 리스트의 길이를 반환하는 식으로 풀이했다.


무난히 통과.

사실 난 위에도 썻지만 문제를 딱 보자마자 매일 보던 재귀문제구나 싶었다. 그런데 문제를 제출하고 나서 다른 사람들의 풀이를 보니까 그렇지 않은 사람이 오히려 엄청 많아서 깜짝 놀랐다.그 사람들의 코드가 틀렸다거나 그 사람들의 방식이 틀렸다거나 이런게 아니라, 세상에는 정말 많은 개발자들이 있고 그 사람들이 짠 코드 하나하나 다르고 배울 점이 있다는게 신기하다..는 말을 하고싶다. 근데 여전히 나는 내 코드가 가장 깔끔..하다고 생각한다. ㅋㅋㅋㅋㅋㅋ 깔끔이라기보단 그냥.. 이렇게 푸는걸 의도하고 낸 문제같은 느낌?

카카오 2019년 블록 게임인지 뭔지 그 문제가 너무 안 풀려서 스트레스 받던 와중에.. 쉬운문제 푸니까 잘 풀려서 ..또 기분이 좋아졋다.ㅋㅋㅋㅋ 사람은 참 단순해 ^^...

728x90