Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

가장 긴 펠린드롬 문제 질문입니다. #38

Closed
PudgeKim opened this issue Oct 15, 2020 · 3 comments
Closed

가장 긴 펠린드롬 문제 질문입니다. #38

PudgeKim opened this issue Oct 15, 2020 · 3 comments

Comments

@PudgeKim
Copy link

PudgeKim commented Oct 15, 2020

expand 함수를 보면 while 조건문에서 right <= len(s) and s[left] == s[right-1] 이렇게 되어있는데
right < len(s) and s[left] == s[right]이 맞지 않나요?

제가 곰곰히 생각해본 결과 right <= len(s)에서 = 이 붙은 이유는 for i in range(len(s)-1) 구문에서 마지막 i에서 i+2를 하면 인덱스 에러 문제 때문에 그런거같긴한데 저건 그렇다쳐도 s[left] == s[right-1]은 이해가 되지 않습니다.
저렇게하면 2칸짜리 포인터 기준으로 i랑 i+1이 같은지를 비교하는게 아니고 그냥 i랑 i가 같은지 비교하게 되는거 아닌가요?

또 return s[left+1:right-1] 부분도 그냥 제가 생각하기에는 return s[left+1:right]이 맞는거같은데
책에 있는 코드로 leetcoe로 제출했을때 잘되는걸보면 제가 이해하지 못한 부분이 있는 것 같은데 전체적으로 설명좀 해주시면 감사하겠습니다.

그리고 이건 여담이지만 책을보면 중간중간 go로 작성된 코드가 보여서 go에 관심있고 열심히 배우고 있는 대학생으로써 질문하나만 여쭙자면 현재 한국에서 경력말고 신입개발자로써도 golang을 잘 다루게되면 경쟁력이 있을까요? golang에 대해 어떻게 생각하시는지 궁금합니다!

@likejazz
Copy link
Collaborator

안녕하세요.

말씀하신대로 불필요하게 같은 위치 비교를 반복하도록 되어 있어 비효율적인 문제가 있는 풀이였습니다. 지적하신대로 코드를 수정하는게 훨씬 더 깔끔하네요. 알려주셔서 감사합니다. 해당 코드는 수정하도록 하겠습니다.

Go는 요즘 가장 선호도가 높은 언어이고, 무엇보다 컨테이너와 찰떡 궁합이라 앞으로도 계속해서 인기가 올라갈 것으로 예상합니다. 아직은 Go 개발자 대부분이 이미 다른 언어에 충분히 경험이 있는 경력자가 대부분이지만 신입 개발자도 Go에 도전해보는게 나쁘지 않을 거라 생각합니다. 특히 네이버, 카카오, 라인 같은 IT 회사에서 Go 개발자에 대한 수요가 많습니다. 저희 또한(현대자동차) 최근에 Go 개발자를 채용하고 있습니다. 주로 시스템 개발 관련하여 Go 개발자 수요가 점점 늘고 있는 추세이니 한 번 도전해보시는걸 추천합니다.

likejazz added a commit that referenced this issue Oct 19, 2020
@PudgeKim
Copy link
Author

답변 감사합니다. 그런데 저는 제가 질문한거처럼 책에 있는 코드가 이해가 안되서 그런데 책에 있는 코드좀 설명해주실 수 있나요?
왜 s[left] == s[right-1] 로 해도 잘 작동이 되는지 while 조건문은 right <= len(s) and s[left] == s[right-1] 도 왜 right-1인지
잘 모르겠습니다. 어떻게 작동하는지를

@likejazz
Copy link
Collaborator

값을 각 절차마다 출력하도록 해서 디버깅 해보면 동작 원리가 이해되실 것 같네요.
제가 책에서 작성한 코드는 불필요하게 while을 많이 반복하는 코드였습니다.

예를 들어 babad를 입력값으로 할때 while 구문이 몇 번 반복하는지 확인해보면 책에서 코드는 총 6번을 반복하게 되고, 알려주신대로 수정하면 2번만 반복하면 됩니다. 제가 작성한 코드는 굳이 안해도 되는 반복을 하는 구조였습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants