Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- hackerrank
- programmers
- 캐치카페
- 우분투
- SW Expert Academy
- 편스토랑
- PYTHON
- 금융문자분석경진대회
- github
- 맥북
- ubuntu
- ChatGPT
- Real or Not? NLP with Disaster Tweets
- 편스토랑 우승상품
- 파이썬
- 코로나19
- leetcode
- AI 경진대회
- Kaggle
- 프로그래머스 파이썬
- gs25
- 데이콘
- Git
- 백준
- dacon
- 자연어처리
- 프로그래머스
- 더현대서울 맛집
- Baekjoon
- Docker
Archives
- Today
- Total
솜씨좋은장씨
[leetCode] 2490. Circular Sentence (Python) (feat.ChatGPT) 본문
Programming/코딩 1일 1문제
[leetCode] 2490. Circular Sentence (Python) (feat.ChatGPT)
솜씨좋은장씨 2023. 3. 27. 15:27728x90
반응형
코딩 1일 1문제! 오늘의 문제는 leetCode 의 Circular Sentence 입니다.
👨🏻💻 문제 풀이
단어 2개씩 짝 지은 후 반복문을 돌면서
단어의 맨 뒷 글자와 맨 앞 글자를 비교해서 다른 경우 정답을 Fasle 로 바꾸고 반복문을 종료하고
그렇지 않은 경우 모든 반복문이 끝날때까지 기다렸다가 정답을 True 로 return 하는 식으로 문제를 풀었습니다.
👨🏻💻 코드 ( Solution ) - SOMJANG
class Solution:
def isCircularSentence(self, sentence: str) -> bool:
is_circular = True
word_list = sentence.split()
for idx in range(len(word_list) - 1):
if word_list[idx][-1] != word_list[idx+1][0]:
is_circular = False
break
if word_list[-1][-1] != word_list[0][0]:
is_circular = False
return is_circular
👨🏻💻 코드 ( Solution ) - ChatGPT - 1회차
class Solution:
def isCircularSentence(self, sentence: str) -> bool:
words = sentence.split()
n = len(words)
for i in range(n):
if words[i][-1] != words[(i+1)%n][0]:
return False
return True
ChatGPT 에게 문제를 풀어달라고 하니 저와 같은 방식인데
한가지 달랐던 것이 마지막 단어와 첫번째 단어를 따로 if 조건문으로 체크하지 않고
% 를 활용하여 그대로 반복문을 돌면서 체크하도록 해서 푼 것이었습니다.
딱 보고 아 ! 저걸 왜 생각못했지! 라는 생각이 들었습니다.
하지만 이렇게 풀었을때는 크게 달라지는게 없으니 더 최적화 된 코드를 부탁했습니다.
👨🏻💻 코드 ( Solution ) - ChatGPT - 2회차 ( 최적화된 코드를 부탁해! - 하지만 실패 케이스 존재 )
class Solution:
def isCircularSentence(self, sentence: str) -> bool:
words = sentence.split()
n = len(words)
last_chars = {words[i][-1]: i for i in range(n)}
if words[0][0] not in last_chars:
return False
curr = last_chars[words[0][0]]
for i in range(n-1):
next = (curr+1) % n
if words[next][0] not in last_chars or last_chars[words[next][0]] != curr:
return False
curr = next
return True
👨🏻💻 코드 ( Solution ) - ChatGPT - 3회차 ( 특정 실패 케이스 알려주고 다시 부탁 )
class Solution:
def isCircularSentence(self, sentence: str) -> bool:
words = sentence.split()
n = len(words)
counts = {}
for word in words:
if word[0] == word[-1]:
counts[word[0]] = counts.get(word[0], 0) + 1
return sum(counts.values()) == n
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
Comments