programmers- lv.2 (튜플)

이예송·2023년 8월 6일

PS

목록 보기
80/97

문제링크: 튜플

✍🏻 Information

content
언어python
난이도⭐️⭐️
풀이시간30분
제출횟수2
인터넷검색유무yes




🍒 My Code

  • 처음 코드
def solution(s):
    answer = []
    length = []
    num = 0
    tmpdigit = ""
    tmplist = []
    realanswer = []
    for idx in range(len(s)-1):
        if s[idx]=="{":
            num,tmplist = 0,[]
        elif s[idx]=="}":
            length.append(num)
            answer.append(tmplist)
        elif s[idx]==",":
            tmpdigit=""
        elif s[idx].isdigit():
            if s[idx+1].isdigit():
                tmpdigit+=s[idx]
            else:
                num+=1
                tmplist.append(int(tmpdigit+s[idx]))
    for i in range(min(length),max(length)+1):
        for j in answer[length.index(i)]:
            if j not in realanswer:
                realanswer.append(j)
        
    return realanswer
  • 정리한 코드
def solution(s):
    answer = []
    s = s[:-2].replace("{","")
    s = s.split("},")
    s = [i.split(",") for i in s]
    length = [len(i) for i in s]
    for i in range(min(length),max(length)+1):
        for j in s[length.index(i)]:
            if int(j) not in answer:
                answer.append(int(j))
    return answer




💡 What I learned

  • 처음에 어떤 순서대로 배열에 담겨야하는지 모르고 짜서 그 코드에 덧붙여짜느라 코드가 더러워져서 다시 짰다.(그게 정리한 코드)
  • 좋은 풀이

<풀이1>

def solution(s):
    answer = []
	#각 집합별로 나누는 것을 아래와 같이 할 수 있다!!
    s1 = s.lstrip('{').rstrip('}').split('},{')
    #또는 s1 = s[2:-2].split("},{")
	#그 다음은 , 기준으로 넣어주면 된다
    new_s = []
    for i in s1:
        new_s.append(i.split(','))
	#len로 sort 할수도 있었다
    new_s.sort(key = len)

    for i in new_s:
        for j in range(len(i)):
            if int(i[j]) not in answer:
                answer.append(int(i[j]))

    return answer

<풀이2>

def solution(s):
    # {{, }}를 제거 후 },{ 으로 나누기
    data = s[2:-2].split("},{")
    # 길이 별로 오름차순 정렬
    data = sorted(data, key=lambda x: len(x))
    answer = []
    for item in data:
        # 각각의 원소로 분류 후
        item = list(map(int, item.split(",")))
        for value in item:
            # 포함되어 있지 않으면 input
            if value not in answer:
                answer.append(value)
    return answer
  • 리스트 요소 길이순으로 sorting:
    1) list_name.sort(key=len)
    2) new_list=sorted(list_name,key=len)
    -> 요소가 list나 string이어야한다. int만 있을 경우는 안됨.

0개의 댓글