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
'Programming Practice > Python' 카테고리의 다른 글
프로그래머스 <PCCP 기출문제 1번 / 동영상 재생기> Python (0) | 2025.04.18 |
---|---|
프로그래머스 <PCCE 기출문제 9번 / 지폐 접기> Python (3) | 2025.04.18 |
프로그래머스 <수열과 구간 쿼리 2> Python (0) | 2025.04.18 |
프로그래머스 <PCCE 기출문제 6번 / 물 부족> (0) | 2025.04.18 |
프로그래머스 <수열과 구간 쿼리 3> Python (0) | 2025.04.17 |