본문 바로가기
Programming Practice/Python

GPT문제 : 가장 많이 등장한 숫자 찾기 Python

by TAMIK 2025. 4. 25.
728x90
Q1. 정수로 이뤄진 리스트가 있을 때, 가장 많이 등장한 숫자와 그 횟수를 출력하라. -ChatGPT
from collections import Counter

def count_num(nums):
    if not nums:	#만약 nums가 비어있다면
    	return None, 0
        
    cnt = Counter(nums)	#cnt에 nums리스트에 있는 숫자들의 중복 개수를 세서 넣기
    n, c = cnt.most_common(1)[0]
    """
    [0]으로 인덱싱 하는 이유는 튜플 형태로 꺼내기 위해서
    n = cnt.most_common(1)까지만 하면 숫자와 횟수가 리스트 형태로 나옴. ex)[(2, 4)]
    인덱싱을 해줘야 언패킹 돼서 튜플 형태가 꺼내짐
    """
    return n, c


#test
numbers = [1, 3, 1, 3, 2, 1]
print(count_num(numbers)) #(1, 3)

 

 

 

 

 

Q2. 가장 긴 연속된 숫자 찾기

정수로 이뤄진 리스트가 주어질 때, 숫자가 연속해서 반복되는 가장 긴 구간을 찾아서 해당 숫자와 반복된 횟수를 출력하시오.  -ChatGPT
def max_len(numbers):
    max_cnt = 1	# 제일 많이 연속된 길이. 하나만 있어도 길이 1이기 때문에 1부터 시작.
    c_cnt = 1	# 현재 세고 있는 개수
    max_n = numbers[0]	# 제일 많이 연속된 숫자. 초기값으로 맨 앞 숫자 넣음.

    for i in range(1, len(numbers)): # i와 i-1비교 위해 1부터 시작.
        if numbers[i] == numbers[i-1]:	#i와 i-1의 숫자가 같다면(앞뒤 숫자 같으면)
            c_cnt += 1 # 개수 +1
        else:
            current_cnt = 1  # 연속 끊기면 1로 초기화

        if current_cnt > max_cnt:	# 만약 가장 긴 길이보다 지금 세고 있는 개수가 더 커지면
            max_cnt = current_cnt	# 아래 내용으로 업데이트
            max_n = numbers[i]

    return max_n, max_cnt

num, cnt = max_len(numbers)	#return 된 두 개의 수를 num과 cnt에 각각 넣기

#test
numbers = [1, 1, 2, 2, 2, 3, 3, 1, 1, 1, 1]
print(f"숫자 {num}이 {cnt}번 연속됨")	# 숫자 1이 4번 연속됨
728x90