오늘은 리눅스 fs 에 대해서 배우나보다
그런가보다~
저번주 금요일에 스터디에서 얘기됬던 문제를 풀어봤는데
일요일에 한 5시간 정도 투자하고
오늘 강의 시작한 10시부터 지금 오후 3시까지 6시간을 썻는데
ㅅㅂ 계속 2씩 값이 오차가 난다
머리아파서 그만할래 ㅈ같네
https://leetcode.com/problems/longest-palindrome-by-concatenating-two-letter-words/
Longest Palindrome by Concatenating Two Letter Words - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
이 문제인데
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
'''
2개 알파벳 한쌍으로 이루어진 리스트들 중 대칭이 만들어질 수 있는 문자열 길이 리턴
1. 같은 문자인지 확인
if 그 문자 count(n) > 2 : cnt+=4n / 해당 문자 제거 / 재귀
elif count(n)==1 : 해당 문자 제거 / 체크=true
else : 아님말구
2. 대칭이 있는지 확인
if : 있다
해당 문자 + 리버스 문자 제거 / 재귀
else : 없음말구
3. 없으면 return 0
'''
class Solution(object):
def longestPalindrome(self, words):
_lenth,_check,_num,_newlist=self.samelatter(0, False, 0, words,)
result=self.difflatter(_lenth,_newlist)
print(result,_lenth,_check,_num,_newlist)
if _num>=2 :
result+=2
else :
if _check :
result+=2
return result
#gg, aa 같은게 몇개 있는지 파악해서 그 총 길이, 중복제거된 리스트를 리턴
def samelatter(self,lnt,s,num,li) :
print('sl()',lnt,s,num,li)
sl_nl=[]
if len(li)==0 :
return lnt,s,num,sl_nl
for i in li :
if i[0]==i[1] :
n=li.count(i)
if n>=2 :
sl_nl=[j for j in li if j not in i]
if n%2==0 :
lnt+=n*2
else :
lnt+=(n-1)*2
num+=1
return self.samelatter(lnt,False,num,sl_nl)
else :
li.remove(i)
sl_nl=li
s=True
return self.samelatter(lnt,s,num,sl_nl)
else :
sl_nl=li
return lnt,s,num,sl_nl
def difflatter(self,lnt,li) :
print('dl()',lnt,li)
for k in li :
sw=k[1]+k[0]
n=li.count(sw)
if n :
li.remove(sw)
li.remove(k)
lnt+=4
return self.difflatter(lnt,li)
return lnt
words = ["mt","lt","tt","lt","tm","lm","ml","mt","tl","mm","lt","tt","mt","ml","tt","tl","tl","mm","tm","ll","ml","lt","ll","ml","tl","ll","tt","tl","lm","ll","mt","tl","tt","lt","tm","tm","mt","tl","lm","tt","lt","lt","ml","lt","tl","mm","lt","ll","ll","tm","lm","tm","mt","tm","tt","tl","ml","tt","ml","mt","tm","tm","mt","mm"]
init_c=Solution()
print(init_c.longestPalindrome(words))
|
cs |
이렇게 짜봤는데
계속 값이 틀리게 나온다 ㅋㅋ
결과값에서 딱 2씩 차이나는데
이게 문자가 같은 인덱스를 계산하는 과정에서
명확하지 못해서
게속 오류가 나는거 같다
시간 오래 썻고 머리도 오래썻으니까
그냥 다른사람 코드를 봤는데
입력값을 Counter 모듈을 사용해서 딕셔너리로 가공하고
가공된 숫자만을 이용해서 길이를 구해버림 ㄷㄷ
그리고 이제 구름에서 직접 제공하는
'알고리즘 먼데이' 채널에 초대되서
오늘 올라온 14주차 문제를 풀기로 했다
문제는 비공개여서 블로그에 포스팅 하지 못한다
14주차 문제는 총 3문제인데
첫번재 문제 읽고 이해하는데만 20분남짓걸렸음 ㅋㅋ;
날잡고 풀어야할듯 ㄹㅇㅋㅋ
'Kubernetes > [구름] 쿠버네티스 전문가 양성 과정 k-digital' 카테고리의 다른 글
[2주-8일차] vi,vim / Graph, deque, DFS (0) | 2022.08.10 |
---|---|
[2주-7일차] (0) | 2022.08.09 |
[1주5일차] (0) | 2022.08.05 |
[1주4일차] (0) | 2022.08.04 |
[1주3일차] 강의-네트워크개요 / 스터디-정규표현식 (0) | 2022.08.03 |