- 리스트 예제 및 문제2026년 04월 10일
- 소쩍소쩍이
- 작성자
- 2026.04.10.:46
In [ ]:# 예제37 - 1~10을 리스트에 저장 후 출력하기 list_a = [] for i in range(1,10+1,1) : list_a.append(i) print(list_a)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]In [ ]:# 예제38 - 10,20,30 ... ,100 저장하고 거꾸로 출력 list_b = [] for i in range(10,100+1,10): list_b.append(i) for i in range(9,-1,-1): print(list_b[i],end=" ")100 90 80 70 60 50 40 30 20 10In [ ]:# 예제37 - 리스트 요소 거꾸로 뒤집기 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for i in range(0,5,1): temp = a[i] a[i] = a[9-i] a[9-i] = temp print(a)[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]In [ ]:# 예제40 - 리스트 a요소 리스트b에 거꾸로 저장하기 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] b=[] for i in range(0,9+1,1): b.append(a[9-i]) print(b)[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]In [ ]:# 예제41 - 리스트 요소 왼쪽으로 한칸씩 원형이동 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] temp= a[0] for i in range(0,8+1,1): a[i] = a[i+1] a[9] = temp print(a)[2, 3, 4, 5, 6, 7, 8, 9, 10, 1]In [ ]:# 예제42 - 리스트 요소 중 최댓값 구하기 import random # 랜덤값을 채우기 위해 랜덤모듈 불러오기 a=[] for i in range(10): # 랜덤 정수 10개를 가져오기 위한 반복 a.append(random.randint(1,100)) # 정수 랜덤값을 불러오고 싶을때 ()안에는 시작과 끝을 넣는다 print(a) M=a[0] for i in range(1,9+1,1): if M<a[i] : M = a[i] print("최댓값 :", M)[70, 95, 91, 57, 84, 19, 93, 16, 94, 53] 최댓값 : 95In [ ]:# 예제43 - 에라토스테네스의 체 a=[] for i in range(1,102,1): a.append(0) # 리스트a 에 0 채워 넣기 print(a) for i in range(2,101,1): # 2는 제외 if a[i]==0: for j in range(i*2,100+1,i): a[j]=1 # 리스트에 2의 배수는 1로 채워 넣기 print(a) for i in range(2,100+1,1): if a[i]==0: # 리스트에 0인 곳을 정수 넣기 print(i,end=" ")[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1] 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97In [ ]:# 예제44 - 10진수를 2진수로 전환하여 리스트에 저장하기 number = int(input("10진수 : ")) list_c = [] while number != 0 : num = number % 2 # 2로 나눈 나머지 -> 현재 자리의 이진수 값 list_c.append(num) # 나머지를 리스트에 추가 (뒤에서부터 저장됨) number = number // 2 # 몫으로 number 갱신 (다음 계산을 위해) print(list_c) # 역순으로 저장된 2진수 리스트 출력 print(len(list_c)) # 리스트 길이 (이진수 자릿수) # 리스트를 뒤에서부터 출력 -> 올바른 2진수 순서로 출력 for i in range(len(list_c)-1, -1, -1): print(list_c[i], end=" ")10진수 : 42 [0, 1, 0, 1, 0, 1] 6 1 0 1 0 1 0In [ ]:# 예제45 - 배열에 저장된 2진수를 10진수로 변환 b = [1,1,0,0,1] # 2진수 값을 리스트로 저장 (예: 11001) n = 0 # 10진수 결과를 저장할 변수 초기화 # 리스트의 각 자리를 순회 for i in range(0,5,1): # 현재 자리의 값에 2의 거듭제곱을 곱해서 누적 n = n + b[i] * (2**(4-i)) # (4-i)는 자릿수 계산 print(n)25In [ ]:# 예제46 - 선형 탐색 알고리즘 a = [26, 27, 39, 63, 57, 75, 11, 76, 80, 18] number = int(input("키 :")) # 리스트의 인덱스를 가리킬 변수 'can' 초기화 can = 0 # 리스트의 끝까지 반복하는 루프 while can < 10: # 현재 가리키는 위치의 값과 찾는 값이 같은지 확인 if number == a[can]: # 값을 찾았다면 인덱스 번호를 출력 print(can, "에서 탐색") # 값을 찾았으므로 더 이상 반복할 필요가 없어서 루프 탈출 break # 값을 찾지 못했다면 다음 인덱스로 이동 can = can + 1 if can == 10: print("탐색 실패")키 :11 6 에서 탐색In [8]:# 예제47 - 이진 탐색 알고리즘 a = [11, 18, 26, 27, 39, 57, 63, 75, 76, 80] num = int(input()) # 탐색 범위의 시작(low)과 끝(hig) 인덱스 설정 low = 0 hig = 9 # 탐색 범위가 유효한 동안반복 while low <= hig: # 탐색 범위의 정중앙 인덱스를 계산 mid = (hig + low) // 2 # 중앙값이 찾는 값과 일치하는 경우 if num == a[mid]: print(mid, "탐색성공") break # 값을 찾았으므로 반복문 즉시 종료 # 찾는 값이 중앙값보다 작은 경우 (왼쪽 절반으로 범위 축소) elif num < a[mid]: hig = mid - 1 # 끝 지점을 중앙 바로 왼쪽으로 옮김 # 찾는 값이 중앙값보다 큰 경우 (오른쪽 절반으로 범위 축소) else: low = mid + 1 # 시작 지점을 중앙 바로 오른쪽으로 옮김 if low > hig: print("탐색실패")39 4 탐색성공In [ ]:# 예제48 - 선택 정렬 알고리즘 a = [20, 50, 30, 10, 60, 40] # 정렬된 앞부분을 제외하고 리스트의 처음부터 마지막 직전까지 반복 for i in range(0, 4 + 1, 1): # i번째 위치를 일단 최솟값이 있는 위치라고 가정 m = i # i 이후의 요소들 중에서 진짜 최솟값의 위치를 탐색 # i+1부터 리스트 끝까지 비교 for j in range(i + 1, 5 + 1, 1): # 현재 가정된 최솟값)보다 더 작은 값이 나타나면 if a[j] < a[m]: # 최솟값의 위치 인덱스를 j로 갱신 m = j # 반복종료 시 m에는 i 이후 가장 작은 값의 위치가 저장됨 # 이제 i번째 값과 찾은 최솟값을 서로 교환 temp = a[i] # 원래 위치의 값을 임시 변수에 보관 a[i] = a[m] # 최솟값을 원래 위치로 이동 a[m] = temp # 임시 보관했던 값을 최솟값이 있던 자리로 이동 print(a)[10, 20, 30, 40, 50, 60]In [ ]:# 예제49 - 버블 정렬 알고리즘 a = [20, 50, 30, 10, 60, 40] # 정렬 회차를 결정 # 한 회차가 끝날 때마다 가장 큰 값이 맨 뒤로 밀려나 고정됨 for i in range(0, 5): # 인접한 두 값을 비교하며 위치를 바꿈 # 이미 정렬된 뒷부분은 제외하고 비교하기 위해 5-i까지만 반복 for j in range(0, 5 - i): # 현재 위치의 값이 다음 위치의 값)보다 크다면 if a[j] > a[j+1]: # 두 값을 서로 교환 # 큰 값을 오른쪽으로 보냄 temp = a[j] a[j] = a[j+1] a[j+1] = temp print(a)[10, 20, 30, 40, 50, 60]In [11]:# 예제50 - 병합 알고리즘 a = [1, 3, 5, 7] b = [3, 4, 8, 10] c = [] i = 0 # a용 인덱스 j = 0 # b용 인덱스 # 두 리스트 중 어느 하나라도 끝에 도달할 때까지 반복 while i < 4 and j < 4: # 두 리스트의 현재 요소를 비교하여 작은 값을 결과 리스트 c에 추가 if a[i] < b[j]: c.append(a[i]) i = i + 1 # 인덱스 이동 else: c.append(b[j]) j = j + 1 # 리스트 a의 데이터를 모두 사용했다면 if i == 4: # 남은 리스트 b의 데이터들을 순서대로 모두 결과 리스트 c에 추가 while j < 4: c.append(b[j]) j = j + 1 # 리스트 b의 데이터를 모두 사용했다면 else: # 남은 리스트 a의 데이터들을 순서대로 모두 결과 리스트 c에 추가 while i < 4: c.append(a[i]) i = i + 1 print(c)[1, 3, 3, 4, 5, 7, 8, 10]In [12]:# 과제28 - 20~1까지의 수를 차례로 리스트에 저장하고 출력 a = [] for i in range(20,0,-1): a.append(i) print(a)[20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]In [24]:# 과제29 - 리스트 요소를 오른쪽으로 한칸씩 원형으로 이동 a = [1,2,3,4,5,6,7,8,9,10] temp = a[9] for i in range(9,0, -1): a[i] = a[i-1] a[0] = temp print(a)[10, 1, 2, 3, 4, 5, 6, 7, 8, 9]In [29]:# 과제30 - 임의의 10갸의 수를 저장하고 있는 리스트에서 최솟값 import random a = [] for i in range(10): a.append(random.randint(1,100)) b = min(a) print(a) print("최솟값",b)[58, 86, 12, 87, 99, 25, 93, 94, 64, 25] 최솟값 12In [36]:# 과제31 - 입력 받은 10진수를 8진수로 변환하여 출력 num = int(input()) c = [] while num != 0: num_a = num % 8 c.append(num_a) num = num // 8 print(c) print(len(c)) for i in range(len(c)-1,-1,-1): print(c[i],end=" ")39 [7, 4] 2 4 7In [5]:# 과제32 - 리스트에 저장된 8진수를 10진수로 변환하여 출력 b = [5,6,7,4,3] n = 0 for i in range(0,5,1): n = n + b[i] * (8**(4-i)) print(n)24035In [7]:# 과제33 - 내림차순 정렬된 데이터에 대한 이진 탐색 a = [80,76,75,63,57,39,27,26,18,11] num =int(input("키 : ")) low = 0 hie = 9 while low <= hie : mid = (low + hie) // 2 if num == a[mid]: print(mid,("에서 탐색 성공")) break elif num > a[mid]: hie = mid -1 else: low = mid+1 if low > hie: print("탐색X")키 : 26 7 에서 탐색 성공In [9]:# 과제34 - 삽입정렬을 이용해서 정렬 a = [3, 7, 2, 8, 5, 1, 10, 9, 4, 6] for i in range(1, 10): key = a[i] # 현재 정렬할 대상인 숫자를 key에 보관 j = i - 1 # key의 바로 왼쪽 인덱스부터 비교를 시작하기 위해 설정 # 정렬된 왼쪽 부분을 역순으로 훑으며 key가 들어갈 자리를 찾습니다. while j >= 0: # 현재 비교 대상이 key보다 크면, 한 칸 뒤로 밀어냅니다. if key < a[j]: a[j+1] = a[j] else: # key가 비교 대상보다 크거나 같다면 여기가 들어갈 자리이므로 멈춥니다. break # 더 왼쪽 원소와 비교하기 위해 인덱스 감소 j = j - 1 # while문이 종료되면 j+1 위치가 key가 들어갈 정확한 빈자리가 됩니다. a[j+1] = key print(a)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]In [ ]:
리스트 예제 및 문제 순서도
'파이썬 > 문제 및 예제' 카테고리의 다른 글
간단한 프로그램 만들기 1 (계산기) (0) 2026.04.16 함수 예제 및 문제 (0) 2026.04.13 반복구조 예제 및 문제 (0) 2026.04.09 선택구조 예제 및 문제 (0) 2026.04.07 순차구조 문제 및 예제 (0) 2026.04.07 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)