본문 바로가기

About coding/Today I learned

2023년 03월 30일 TIL

문제:

프로그래머스 파이썬 코딩테스트 중...

주어진 숫자 리스트 중에서 최빈값을 구해 출력하는 문제.

 

시도:

def solution(array):
    array.sort() #숫자리스트정렬
    int_list = array #숫자리스트를 변수에 담는다.
    str_list = list(map(str,int_list)) #map으로 모든 숫자를 문자열로 바꾼다.
    result_str = ''.join(str_list) #쪼개져있는 문자열들을 합쳐서 하나의 문자열로
    empty_list = []
    for i in str_list:
        num_count = result_str.count(i) #문자열리스트를 돌며 i를 하나씩 잡아서 통돼지바베큐 문자열에서 몇번씩 들어있나 센다.
        #i들 중 가장 num_count가 많은 i를 프린트한다.
        empty_list.append(num_count)
        if num_count > empty_list[-1]:
            empty_list = [num_count]
            answer = i
    
    
    return answer

문자열에서 count 하면 해당 알파벳이 나오는 점에서 착안... 이리저리 해보려 했으나 실패 ㅜ,ㅜ

괜찮아 난 초보니깐!

 

해결:

어떤 고수님이 쓰신 코드

def solution(array):
    while len(array) != 0:
        for i, a in enumerate(set(array)):
            array.remove(a)
        if i == 0: return a
    return -1

우아하당...

멋져... 근데 이것도 잘 이해가 안가는 나의 실력.

하나 하나 쪼개서 구글이나 GPT에 돌려본다.

 

알게된점:

고수님 코드에다 주석을 달아서 한 줄 한 줄 분석해봐야지.

def solution(array): #array라는 리스트를 받는 함수를 선언
    while len(array) != 0: #이 함수는 배열을 순회하면서 순회한 값을 점차 지워가는데, 이 줄에서 배열의 길이가 0이 되면 순회를 멈추는 세팅을 함.
        for i, a in enumerate(set(array)): #array리스트를 셋
            array.remove(a)
        if i == 0: return a
    return -1

 

그 외 새로 배운 작은 내용:

_튜터님이 알려주신 STACK 체험 코드

class Stack:
    def __init__(self):
        self.items = []

    def is_empty(self): #스택이 비었을 때 상태.
        return self.items == []

    def push(self, item): #제일 위에 새로운 걸 넣음
        self.items.append(item)

    def pop(self): #제일 위에 껄 빼냄
        return self.items.pop

    def peek(self): #꺼내진 않고 제일 위에껄 확인하는 명령
        return self.items[-1]

    def size(self): #지금까지 쌓인 데이터 양을 체크
        return len(self.items)
        
        
이렇게 해놓고
my_stack = Stack()
my_stack.push(1)
my_stack.push(2)
my_stack.push(3)
print(my_stack.pop)
이런식으로 활용

 

_파이썬의 정렬기능 예시 쏘티드

 

# 쏘티드 오름차순: 쏘티드는 정렬할 대상이 바뀌지 않음
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list)

print(sorted_list)
print(my_list)

# 쏘티드 내림차순
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_list = sorted(my_list, reverse=True)

print(sorted_list)
print(my_list)


# 쏘트 오름차순: 쏘트는 정령할 대상 자체가 바뀌어버림
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list)
print(my_list)


# 쏘트 내림차순
my_list.sort(reverse=True)
print(my_list)
print(my_list)

 

_터미널 글자에 색상 넣는 법

f "\033[숫자m내용내용내용내용\033[0m"

word = f"여기는 \033[36m파란색\033[0m 여기는 원래색"


print(word)

이렇게 하면

이렇게 나온다 ㅎㅎㅎ

'About coding > Today I learned' 카테고리의 다른 글

2023년 4월 3일 TIL [#Django 입문_1]  (0) 2023.04.03
2023년 03월 31일 TIL  (0) 2023.03.31
2023년 03월 29일  (0) 2023.03.29
2023년 03월 28일 TIL  (0) 2023.03.28
2023년 03월 27일 TIL  (0) 2023.03.27