일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Baekjoon
- 코로나19
- ubuntu
- hackerrank
- gs25
- Real or Not? NLP with Disaster Tweets
- dacon
- PYTHON
- 자연어처리
- 데이콘
- 편스토랑 우승상품
- 금융문자분석경진대회
- github
- Git
- ChatGPT
- 파이썬
- AI 경진대회
- programmers
- leetcode
- 백준
- 맥북
- Docker
- SW Expert Academy
- 더현대서울 맛집
- 우분투
- 프로그래머스 파이썬
- 편스토랑
- Kaggle
- 캐치카페
- 프로그래머스
- Today
- Total
솜씨좋은장씨
[leetCode] 796. Rotate String (Python) (feat.ChatGPT) 본문
[leetCode] 796. Rotate String (Python) (feat.ChatGPT)
솜씨좋은장씨 2023. 3. 28. 21:13
코딩 1일 1문제! 오늘의 문제는 leetCode 의 Rotate String 입니다.
👨🏻💻 문제 풀이
입력받은 문자열 s 에서 뒤쪽부터 문자를 하나씩 pop 해온 뒤
pop 해온 값을 shift_word_list 에다가 append 합니다.
이 다음에 shift_word_list 를 join 하여 문자열로 만든 값과 pop 하고 남은 문자열 을 합쳐서 만든 값이
내가 원하는 목표 goal 문자열이 되었는지 확인하고
만약 goal 이 되었으면 멈추고 True 를 return
goal 이 되지 않았으면 계속 pop -> 확인 -> pop -> 확인 을 반복하다가
문자열 s 에서 더이상 pop 할 값이 남아있지 않으면 while 반복문을 종료하고 False 를 return 하도록 하였습니다.
👨🏻💻 코드 ( Solution ) - SOMJANG
class Solution:
def rotateString(self, s: str, goal: str) -> bool:
answer = False
s_list = list(s)
shift_word_list = []
while True:
if goal == f"{''.join(shift_word_list)[::-1]}{''.join(s_list)}":
answer = True
break
if not s_list:
break
shift_word_list.append(s_list.pop())
return answer
👨🏻💻 코드 ( Solution ) - ChatGPT - 1회차 - 그냥 풀어줘!
class Solution:
def rotateString(self, s: str, goal: str) -> bool:
if len(s) != len(goal):
return False
for i in range(len(s)):
if s == goal:
return True
s = s[1:] + s[0]
return False
오늘도 역시 ChatGPT 에게도 풀어달라고 해보았습니다.
ChatGPT 는 pop 대신 slicing 을 통해 문제를 푼 것을 보고 또 아하 이렇게도 풀 수 있었지 라는 생각이 들었습니다.
이는 제가 풀었던 방법과 크게 다르지 않았습니다.
👨🏻💻 코드 ( Solution ) - ChatGPT - 2회차 - 조금 더 빠르고 메모리를 덜 이용하는 코드를 부탁해!
class Solution:
def rotateString(self, s: str, goal: str) -> bool:
if len(s) != len(goal):
return False
for i in range(len(s)):
if s[i:] + s[:i] == goal:
return True
return False
이번에는 더 빠르고 더 메모리를 적게 이용하는 코드를 부탁해보았습니다.
그랬더니 s = s[1:] + s[0] 과정을 없애고
if 문에서 s[i:] + s[:i] 를 통해서 바로 goal 인지 아닌지 확인하는 식으로 푸는 것을 보았습니다.
하지만! 이 방식도 엄청 드라마틱 하지는 않았습니다.
요 며칠 ChatGPT 에게 문제를 풀어보라고 하니
더 빠르고 메모리를 더 적게 사용하는 풀이는 어렵지만
더 짧고 간결한 코드는 더 잘 작성하는 것 같은 느낌이었습니다.