본문 바로가기
프로그램

[파이썬] 문제 : 2개의 리스트에서 중복된 과일 찾기

by 오디세이99 2024. 5. 22.
728x90
반응형

문제 :

fruits_a, fruit_b 각자 자신이 원하는 과일을 3 이상 입력한  
 리스트에 공통적으로 들어 있는 과일을 출력하는 프로그램을 작성하여라. 

, upper() lower() 함수를 사용하여 대소문자를 구별하지 않으며 
공통된 과일이 없을 경우 중복되는 과일이 존재하지 않습니다.” 라는 메세지를 출력하여라.



이 문제를 print, input, 조건문, 반복문, list만을 사용해서 작성해주세요.
파이썬에서 기본으로 제공하는 함수는 사용하지 말고요.

 

fruits_a = []                         # 입력 받을 과잃 리스트
fruits_b = []

for i in range(2):                    # 2명 입력 받기 위한 반복문
    while True:                       # 과일 3개 이상 입력을 위한 무한 반복. break로 빠져나감
        tmp_lst = input(f"{i}번 과일입력(3개 이상. 예:사과,배,귤)").split(',')  # 입력 받고, split()으로 분리
        if len(tmp_lst) >= 3:         # 3개 이상 이면 while 반복문 빠져나감
            break
    if i == 0:                        # 첫번째는 fruits_a
        fruits_a = tmp_lst
    else:                              # 두번째는 fruits_b
        fruits_b = tmp_lst

common_lst = []                        # 공통되는 과일을 담을 리스트 변수 선언
for a_e in fruits_a:                   # 첫번째 과일들을 하나씩 꺼냄
    if a_e in fruits_b:                # in 으로 두번째 과일들에 있는지 확인
        common_lst.append(a_e)         # 있다면 공통된 과일이기 때문에 추가

if len(common_lst) == 0:               # 곹통괸 과일이 없으면 리스트의 len()이 0
    print('중복되는 과일이 존재하지 않습니다.')
else:
    print('중복과일:',common_lst)

 

문제의 조건에 for 등을 사용하라는 조건이 있어서 위와 같이 하지만 

다음과 같이 간단히 중복 요소를 찾을 수 있습니다.

common_lst = list(set(fruits_a) & set(fruits_b))   # set() 집합으로 만들어 &(and) 조건 확인하면 공통된 요소 찾음
print(common_lst)
728x90
반응형

댓글