본문 바로가기
프로그램

[파이썬] 문제 : 과일명 입력 받아, 많은 수, 적은 수 찾기

by 오디세이99 2022. 11. 27.
728x90
반응형

 

lst = []                      # 결과 저장용 리스트 변수
s = ''                        # 알고자 하는 과일 변수 선언
while True:                  # 과일을 몇개 담을지 모르기 때문에 무한 반복
    v = input('')             # 과일 이름 입력 받기
    
    if v == '0':              # 과일이 '0' 이면 종료
        s = input()            # 알고자 하는 과일 입력 받음
        break
    
    find_idx = -1              # 동일한 과일이 있는지 찾고 인덱스 기록
    for i in range(len(lst)): # 현재 lst 요소수 만큼 반복. lst는 [과일명, 수] 로 구성
        if v == lst[i][0]:     # lst의 이름이 입력 받은 과일명과 같으면
            find_idx = i        # 해당 인덱스를 기록
            break
    
    if find_idx == -1:         # -1 이면 동일 과일명이 없다는 뜻
        lst.append([v, 1])      # 그러면 새로 추가[과일명, 1]로 기록. 1은 1개 추가
    else:
        lst[find_idx][1] += 1   # find_idx가 -1이 아니면 과일명이 있다는 뜻. 해당 인덱스의 수에 +1 함

for i in range(len(lst)):      # 알고자 하는 과일 찾기
    if lst[i][0] == s:         # 리스트의 과일명이 알고자 하는 과일명과 같은지 확인
        print(s,'=',lst[i][1])  # 알고자 하는 과일명이면 출력

c_max = 0                       # 가장 많은 수 기록용 변수
c_min = len(lst)                # 가장 적은 수 기록용 변수. 초기화는 가장 큰 값을 초기값으로 주면 되므로 len(lst) 로함
idx_max = -1                    # 가장 많은 수의 인덱스
idx_min = -1                    # 가장 적은 수의 인섹스
for i in range(len(lst)):
    if lst[i][1] > c_max:       # 가장 많은 수 찾기
        c_max = lst[i][1]
        idx_max = i
        
    if lst[i][1] < c_min:       # 가장 작은 수 찾기
        c_min = lst[i][1]
        idx_min = i
        
print('max :',lst[idx_max][0],'=',lst[idx_max][1])
print('min :',lst[idx_min][0],'=',lst[idx_min][1])

 

728x90
반응형

댓글