4.python을 이용한 알고리즘 문제(60~90)
60. 리스트 컨트롤러(1단계 : 추가)[문제]
# ex74_문제.py
# 리스트 컨트롤러[1단계 : 추가]
scores = [11, 87, 0, 0, 0]
cnt = 2
while True:
print("[1]추가하기")
choice = int(input("메뉴 선택 : "))
if choice == 1:
pass
정답
# ex74_정답.py
# 리스트 컨트롤러[1단계 : 추가]
scores = [11, 87, 0, 0, 0]
cnt = 2
while True:
i = 0
while i < cnt:
print(scores[i], end=" ")
i = i+ 1
print()
print("[1]추가하기")
choice = int(input("메뉴 선택 : "))
if choice == 1:
if cnt == 5:
print("더이상 추가할 수 없습니다.")
continue
value = int(input("추가할 값 입력 : "))
scores[cnt] = value
cnt += 1
61.리스트 컨트롤러(1단계 : 삭제)[문제]
# ex75_문제.py
# 리스트 컨트롤러[1단계 : 삭제]
scores = [11, 87, 53, 92, 100]
cnt = 5
while True:
i = 0
while i < cnt:
print(scores[i], end=" ")
i = i+ 1
print()
print("[2]삭제하기")
choice = int(input("메뉴 선택 : "))
if choice == 2:
pass
정답
# ex75_정답.py
# 리스트 컨트롤러[1단계 : 삭제]
scores = [11, 87, 53, 92, 100]
cnt = 5
while True:
i = 0
while i < cnt:
print(scores[i], end=" ")
i = i+ 1
print()
print("[2]삭제하기")
choice = int(input("메뉴 선택 : "))
if choice == 2:
if cnt == 0:
print("더이상 삭제할 수 없습니다.")
continue
value = int(input("삭제할 값 입력 : "))
# 삭제할 값의 위치 검색
del_idx = -1
i = 0
while i < cnt:
if scores[i] == value:
del_idx = i
i = i + 1
if del_idx == -1:
print("해당 값은 존재하지 않습니다.")
else:
i = del_idx
while i < cnt-1:
scores[i] = scores[i+1]
i = i + 1
cnt = cnt - 1
주의사항 및 Tip
이 문제의 특징은 실제 scores는 제대로된 자리 이동을 하지 않았다.
실제로 scores를 찍어보면 [87, 53, 92, 100, 100] 처럼, 실제 scores의 모습은 제대로된 모습이 아니게 된다.
나중에 배우겠지만, 이럴경우 temp를 사용해서 기존 배열을 줄여준다음 복사된 값을 넣어주는 방식으로 이 문제를 해결했다
62. 리스트 컨트롤러(1단계 : 삽입)[정답]
# ex76_문제.py
# 리스트 컨트롤러[1단계 : 삽입]
scores = [10, 20, 0, 0, 0]
cnt = 2
while True:
i = 0
while i < cnt:
print(scores[i], end=" ")
i = i+ 1
print()
print("[3]삽입하기")
choice = int(input("메뉴 선택 : "))
if choice == 3:
pass
정답
# ex77_문제.py
# 리스트 컨트롤러[1단계 : 삽입]
scores = [10, 20, 0, 0, 0]
cnt = 2
while True:
i = 0
while i < cnt:
print(scores[i], end=" ")
i = i+ 1
print()
print("[3]삽입하기")
choice = int(input("메뉴 선택 : "))
if choice == 3:
if cnt == 5:
print("더이상 추가할 수 없습니다.")
continue
index = int(input("삽입할 위치 입력 : "))
if cnt < index or index < 0:
print("해당 위치에는 삽입할 수 없습니다.")
continue
value = int(input("삽입할 값 입력 : "))
i = cnt-1
while i >= index:
scores[i+1] = scores[i]
i = i - 1
scores[index] = value
cnt = cnt + 1
63. 리스트 컨트롤러(1단계 : 최종)[정답]
# ex77_문제.py
# 리스트 컨트롤러[1단계 : 최종]
# 직접 완성하기!
# 1) 추가
# 2) 삭제
# 3) 삽입
scores = [10, 20, 0, 0, 0]
cnt = 2
while True:
print("[1]추가")
print("[2]삭제")
print("[3]삽입")
print("[0]종료")
sel = int(input("메뉴 선택 : "))
if sel == 1:
pass
elif sel == 2:
pass
elif sel == 3:
pass
elif sel == 0:
pass
정답
주의사항 및 Tip
마찬가지로 이 상태에서 지웠어도 실제 accs의 값은 2개이다. print가 cnt까지만 되어있으서 하나처럼 보이는거일뿐
나중에 배우겠지만, 이럴경우 temp를 사용해서 기존 배열을 줄여준다음 복사된 값을 넣어주는 방식으로 이 문제를 해결했다
64. ATM(4단계)[문제]
# ex78_문제.py
# ATM[4단계]
# 1. 가입
# . 계좌번호와 비밀번호를 입력받아 가입
# . 계좌번호 중복검사
# 2. 탈퇴
# . 계좌번호를 입력받아 탈퇴
accs = [1001, 1002, 0, 0, 0]
pws = [1111, 2222, 0, 0, 0]
cnt = 2
run = True
while run:
print("[1]가입")
print("[2]탈퇴")
choice = int(input("메뉴 선택 : "))
if choice == 1:
pass
elif choice == 2:
pass
정답
# ex78_정답.py
# ATM[4단계]
# 1. 가입
# . 계좌번호와 비밀번호를 입력받아 가입
# . 계좌번호 중복검사
# 2. 탈퇴
# . 계좌번호를 입력받아 탈퇴
accs = [1001, 1002, 0, 0, 0]
pws = [1111, 2222, 0, 0, 0]
cnt = 2
run = True
while run:
# 회원정보 출력
i = 0
while i < cnt:
print(accs[i], pws[i])
i = i + 1
print("[1]가입")
print("[2]탈퇴")
choice = int(input("메뉴 선택 : "))
if choice == 1:
if cnt == 5:
print("[메세지]더이상 가입할 수 없습니다.")
continue
acc = int(input("[가입]계좌번호 입력 : "))
# 계좌번호 중복검사
check = -1
i = 0
while i < cnt:
if acc == accs[i]:
check = i
i = i + 1
if check != -1:
print("계좌번호가 중복됩니다.")
else:
pw = int(input("[가입]비밀번호 입력 : "))
accs[cnt] = acc
pws[cnt] = pw
cnt += 1
print("[메세지]가입을 축하합니다.")
elif choice == 2:
acc = int(input("[탈퇴]계좌번호 입력 : "))
check = -1
i = 0
while i < cnt:
if acc == accs[i]:
check = i
i = i + 1
if check == -1:
print("[메세지]계좌번호를 확인해주세요.")
else:
i = check
while i < cnt-1:
accs[i] = accs[i+1]
i = i + 1
cnt -= 1
print("[메세지]이용해주셔서 감사합니다.")
주의사항 및 Tip
마찬가지로 이 상태에서 지웠어도 실제 accs의 값은 2개이다. print가 cnt까지만 되어있으서 하나처럼 보이는거일뿐
나중에 배우겠지만, 이럴경우 temp를 사용해서 기존 배열을 줄여준다음 복사된 값을 넣어주는 방식으로 이 문제를 해결했다
65. [리스트 문제 1]
# 문제 1) 다음 리스트를 이용해서 전체 합출력
# 문제 2) 다음 리스트를 값을 입력하면 번호 출력
# 문제 3) 다음 리스트를 이용해서 a 의 값중 홀수만 b 에 저장(위치는 동일한위치에 저장)
# 문제 4) 다음 리스트를 이용해서 a 의 값중 홀수만 b 에 저장(위치는 앞에서 부터 저장)
# 문제 5) 다음 리스트를 이용해서
# 숫자를 5번입력받는다 (범위는 0~4 사이)
# 해당위치의 값이 하나씩 줄어들게 한다.
# 문제 6) 다음 리스트를 이용해서
# 방번호 (인덱스) 를 5번 입력받는다 (범위는 0~4 사이)
# 해당 위치의 값을 1로 변경한다 .
# 추가 조건 1로 한번 변한값은 다시 입력했을때 "이미선택한자리입니다." 라고 출력
정답
# 문제 1) 다음 리스트를 이용해서 전체 합출력
a =[10,4,5,3,1]
total = 0
i = 0
while i < 5:
total += a[i]
i += 1
print(total)
# 문제 2) 다음 리스트를 값을 입력하면 번호 출력
a =[10,4,5,3,1]
b = int(input("값을 입력하세요 "))
i = 0
while i < 5:
if b == a[i]:
print(i)
i +=1
# 문제 3) 다음 리스트를 이용해서 a 의 값중 홀수만 b 에 저장(위치는 동일한위치에 저장)
a =[10,4,5,3,1]
b = [0,0,0,0,0]
i = 0
while i < 5:
if a[i] % 2 == 1:
b[i] = a[i]
i += 1
print(b)
# 문제 4) 다음 리스트를 이용해서 a 의 값중 홀수만 b 에 저장(위치는 앞에서 부터 저장)
# 예) b = [5,3,1,0,0]
a =[10,4,5,3,1]
b = [0,0,0,0,0]
i = 0
k = 0
while i < 5:
if a[i] % 2 == 1:
b[k] = a[i]
k += 1
i += 1
print(b)
# 문제 5) 다음 리스트를 이용해서
# 숫자를 5번입력받는다 (범위는 0~4 사이)
# 해당위치의 값이 하나씩 줄어들게 한다.
i = 0
while i < 5:
print(a)
me = int(input("숫자를 (위치 0~4) 를 입력하세요 >>> "))
a[me] -= 1
i += 1
print(a)
# 문제 6) 다음 리스트를 이용해서
# 방번호 (인덱스) 를 5번 입력받는다 (범위는 0~4 사이)
# 해당 위치의 값을 1로 변경한다 .
# 추가 조건 1로 한번 변한값은 다시 입력했을때 "이미선택한자리입니다." 라고 출력
while i < 5:
print(a)
me = int(input("방번호(인덱스) 0~4를 입력하세요 >>> " ))
if a[me] == 0:
a[me] = 1
else :
print("이미선택한자리입니다.")
i += 1
print(a)
66. [리스트 문제 2]
# 문제1) 인덱스(방번호)를 입력하면 값출력
# 문제 2 ) 가장 큰값 출력
# 문제 3 ) 아래 리스트중 홀수와 홀수의 개수출력
# 문제 4) a 의 값을 b에 거꾸로 저장
# 문제 5) 숫자를 하나 입력받고 a의 값들을 하나씩 앞으로 밀어 저장후 맨뒤에저장
# 문제 6) 숫자를 하나 입력받고 a의 값들을 하나씩 뒤 로 밀어 저장후 맨앞 에저장
정답
# 문제1) 인덱스(방번호)를 입력하면 값출력
a = [10,20,30,40,50]
me = int(input("방번호 (0~4)를 입력하세요 "))
print(a[me])
# 문제 2 ) 가장 큰값 출력
a = [10,21,35,74,34]
a = [10,21,35,74,34]
max =a[0]
i =0
while i < 5:
if max < a[i]:
max = a[i]
i+= 1
print(max)
# 문제 3 ) 아래 리스트중 홀수와 홀수의 개수출력
#예) 21,35
# 홀수의 개수 : 2
a = [10,21,35,74,34]
i =0
c = 0
while i < 5:
if a[i]%2==1:
print(a[i] , end=", ")
c += 1
i += 1
print()
print(c)
# 문제 4) a 의 값을 b에 거꾸로 저장
# 예) b = [34,74,35,21,10]
a = [10,21,35,74,34]
b = [0,0,0,0,0]
i =0
k = 4
while i < 5:
b[k] = a[i]
k -= 1
i += 1
print(b)
# 문제 5) 숫자를 하나 입력받고 a의 값들을 하나씩 앞으로 밀어 저장후 맨뒤에저장
# 예) 36 ==> a = [21,35,74,34,36]
a = [10,21,35,74,34]
me = int(input("숫자를 입력하세요"))
i =0
while i < 4:
a[i] =a[i +1]
i += 1
a[4] = me
print(a)
# 문제 6) 숫자를 하나 입력받고 a의 값들을 하나씩 뒤 로 밀어 저장후 맨앞 에저장
a = [10,21,35,74,34]
me = int(input("숫자를 입력하세요"))
i = 3
while i > 0 :
a[i+1] = a[i]
i-=1
a[0] = me
print(a)
a = [10,21,35,74,34]
me = int(input("숫자를 입력하세요"))
i =0
k=4
while i < 4:
a[k] = a[k-1]
k -= 1
i += 1
a[0] = me
print(a)
67. [리스트 문제 3]
a =[10,20,30,40,50]
b = [13,54,17,42,1]
c =[0,0,0,0,0]
# 문제1) a 와 b를 각각 대조해서 서로합이 짝수일때만 c에 저장
# 문제2) 구구단 문제 3문제를 랜덤으로 출제후 답을 입력한다.
# 문제3) 아래 과제 3개와 가격 3개가 있다.
# 문제4) 아래 과제 3개와 가격 3개가 있다.
정답
a =[10,20,30,40,50]
b = [13,54,17,42,1]
c =[0,0,0,0,0]
# 문제1) a 와 b를 각각 대조해서 서로합이 짝수일때만 c에 저장
# 예) c = [74, 82, 0, 0, 0]
i = 0
n = 0
while i < 5:
if (a[i] + b[i]) % 2 == 0:
c[n] = a[i] + b[i]
n += 1
i += 1
print(c)
# 구구단 문제 3문제를 랜덤으로 출제후 답을 입력한다.
# 맞은 답만 c 에 저장
# 예) 2 * 2 = 4 ==> 정답
# 예) 5 * 3 = 10 ==> 오답
# 예) 6 * 4 = 24 ==> 정답
# 결과) c = [4,24,0]
import random
c = [0,0,0]
i = 0
n = 0
while i <3:
a = random.randint(2,9)
b = random.randint(1,9)
r = a * b
print(a ," * " , b , "=" )
me = int(input())
if me == r:
c[n] += r
n += 1
i += 1
print(c)
# 문제3) 아래 과제 3개와 가격 3개가 있다.
# 주문을 5개 하고 총합 출력
# 예) 1,1,2,2,0 ==> 2000 + 2000 + 3000 + 3000 + 1000
a = ["새우깡" , "칸쵸" , "포카칩"]
b = [1000, 2000, 3000]
i =0
total =0
while i < 5:
print(a)
print(b)
me = int(input("0~2를 입력하세요 "))
total += b[me]
i += 1
print(total)
# 문제4) 아래 과제 3개와 가격 3개가 있다.
# 주문을 5개 하고 각각의 이름을 5개 저장
# 예) 1,1,2,2,0 ==> c = ["칸쵸" , "칸쵸" ,"포카칩" , "포카칩" , "새우깡"]
a = ["새우깡" , "칸쵸" , "포카칩"]
b = [1000, 2000, 3000]
c = [0,0,0,0,0]
i =0
while i < 5:
print(a)
print(b)
me = int(input("0~2를 입력하세요 "))
c[i] = a[me]
i += 1
print(c)
68. [리스트 문제 4]
a = [1001,1002,1003,1004]
b = [40,75,23,64]
c = [0,0,0,0]
# 문제1]시험에 합격한사람은 번호를 c 에 저장 (60점이상)
#예) c[1002,1004,0,0]
a = [1001,30,1002,83,1003,61]
# 문제2] 위 리스트는 (번호,점수) 가 한셋트이다
#예) 1001 ==> 30
#예) 1002 ==> 43
#예) 1003 ==> 61
# 시험에 합격한사람 번호 를 c에 저장
# 예) c =[1002,1003,0]
c =[0,0,0]
a = [10,20,30,40,50]
c = [0,0,0,0,0]
#문제3] 점수를 입력하면 그점수만빼고 전부 c 에 저장
#예) 20 ==> c[10,30,40,50,0]
a =[1001,1002,1003,1004]
b = [43,54,12,76]
c = [0,0,0,0]
# 문제4] 번호를 입력하면 입력한사람만 뺴고 점수 전부 c에 저장
#예) 1002 ==> c=[43,12,76,0]
정답
a = [1001,1002,1003,1004]
b = [40,75,23,64]
c = [0,0,0,0]
# 문제1] 시험에 합격한사람은 번호를 c 에 저장 (60점이상)
#예) c[1002,1004,0,0]
i = 0
n = 0
while i < 4:
if b[i] >= 60:
c[n] = a[i]
n += 1
i += 1
print(c)
a = [1001,30,1002,83,1003,61]
# 문제2] 위 리스트는 (번호,점수) 가 한셋트이다
#예) 1001 ==> 30
#예) 1002 ==> 43
#예) 1003 ==> 61
# 시험에 합격한사람 번호 를 c에 저장
# 예) c =[1002,1003,0]
c =[0,0,0]
i = 0
n = 0
while i < 6:
if a[i+1] >=60:
c[n] = a[i]
n += 1
i += 2
print(c)
a = [10,20,30,40,50]
c = [0,0,0,0,0]
#문제3] 점수를 입력하면 그점수만빼고 전부 c 에 저장
#예) 20 ==> c[10,30,40,50,0]
me = int(input("점수를입력하세요 "))
i = 0
n = 0
while i < 5:
if me != a[i]:
c[n] = a[i]
n+=1
i+=1
print(c)
a =[1001,1002,1003,1004]
b = [43,54,12,76]
c = [0,0,0,0]
# 문제4] 번호를 입력하면 입력한사람만 뺴고 점수 전부 c에 저장
#예) 1002 ==> c=[43,12,76,0]
print("삭제할 번호를 입력하세요 ")
me = int(input())
i = 0
n = 0
while i < 4:
if me != a[i]:
c[n] = b[i]
n += 1
i += 1
print(c)
69. [리스트 문제 5]
a = [0,0,0,0,0]
# 문제1) a 에 랜덤값(1,100) 3개와 번호 3개를 저장
# 문제2) a 에 랜덤값(1,100) 6 개 저장후 가장큰값 출력
# 문제3) a 에 랜덤값(1,100) 3개와 번호 3개를 저장 후 가장 큰점수의 번호 출력
정답
# 문제1) a 에 랜덤값(1,100) 3개와 번호 3개를 저장
# 조건 ) 번호는 1001 부터 1씩 증가
# 예) a = [1001, 43, 1002,46, 1003,64]
import random
a =[0,0,0,0,0,0]
i =0
num = 1001
while i < 6:
a[i] = num
a[i+1] = random.randint(1,100)
i += 2
print(a)
# 문제2) a 에 랜덤값(1,100) 6 개 저장후 가장큰값 출력
# 조건 ) 번호는 1001 부터 1씩 증가
# 예) a = [34,54,22,11,57,31]
# 예) 57
import random
a = [0,0,0,0,0,0]
i =0
while i < 6:
a[i] = random.randint(1, 100)
i += 1
print(a)
max = a[0]
i = 0
while i < 6:
if max < a[i]:
max = a[i]
i+=1
print(max)
# 문제3) a 에 랜덤값(1,100) 3개와 번호 3개를 저장 후 가장 큰점수의 번호 출력
# 조건 ) 번호는 1001 부터 1씩 증가
# 예) a = [1001, 43, 1002,46, 1003,64]
# 예) 1003번
import random
a = [0,0,0,0,0,0]
num = 1001
i =0
while i < 6:
a[i] = num
a[i +1] = random.randint(1,100)
num += 1
i += 2
print(a)
max = a[1]
maxindex = 1
i =0
while i < 6:
if i % 2 == 1:
if max < a[i]:
max = a[i]
maxindex = i
i += 1
print(a[maxindex-1])
70. [리스트 문제 6]
a = [10,20,30,40,50]
b = [0,0,0,0,0]
# 값을 5번 입력받고 a 에서 찾아서
# b 에 차례대로 찾은 값의 방번호(인덱스) 저장 (5번반복)
# 조건 ) 찾는값이 없는 값이면 -1 저장
# 예) 10, 10, 50 , 33 , 30
# ==> b = [0,0,4,-1,2]
정답
i = 0
while i < 5 :
index = -1
num = int(input("값을 입력해주세요"))
if a[i] == num :
index = i
b[i] = index
i+=1
print(b)
71. 구구단[문제]
# ex79_문제.py
# 2차원 반복문
i = 0
while i < 4:
j = 0
while j < 3:
print(i, j)
j = j + 1
i = i + 1
# 문제) 구구단 출력
# === 2단 ===
# 2 X 1 = 2
# 2 X 2 = 4
# 2 X 3 = 6
# 2 X 4 = 8
# 2 X 5 = 10
# 2 X 6 = 12
# 2 X 7 = 14
# 2 X 8 = 16
# 2 X 9 = 18
# === 3단 ===
# 3 X 1 = 3
# 3 X 2 = 6
# ...
# ...
정답
i = 2
while i <= 9:
print("=== %d단 ===" % i)
j = 1
while j <= 9:
print("%d X %d = %d" % (i, j, i*j))
j = j + 1
i = i + 1
72. 삼각형 그리기[문제]
# 문제 1)
"""
#
##
###
"""
# 문제 2)
"""
###
##
#
"""
# 문제 3)
"""
@##
@@#
@@@
"""
# 문제 4)
"""
#
###
#####
"""
정답
# 문제 1)
"""
#
##
###
"""
i = 0
while i < 3:
j = 0
while j < i+1 :
print("#",end="")
j+=1
print()
i+=1
print()
# 문제 2)
"""
###
##
#
"""
i = 0
while i < 3:
j = 3-i
while j > 0:
print("#",end="")
j-=1
print()
i+=1
print()
# 문제 3)
"""
@##
@@#
@@@
"""
i = 0
while i < 3:
j = 0
while j <= i:
print("@", end="")
j = j + 1
j = 2
while j > i:
print("#", end="")
j = j - 1
print()
i = i + 1
print()
# 문제 3)
"""
@##
@@#
@@@
"""
i=1
j=0
while i < 4:
k = 0
while k < i :
print("@" , end="")
k+=1
j = 3-i
while j > 0 :
print("#" , end="")
j-=1
i+=1
print()
print()
# 문제 4)
"""
#
###
#####
"""
k = 0
i = 0
while i < 3:
j = 2
while j > i:
print(" ", end="")
j = j - 1
j = 0
while j <= k:
print("#", end="")
j = j + 1
print()
i = i + 1
k = k + 2
# 문제 4)
"""
#
###
#####
"""
i = 1
while i < 4:
k = 3-i
while k > 0 :
print(" ", end="")
k-=1
j = 0
while j < 2*i-1 :
print("#",end="")
j+=1
print()
i+=1
73. 소수찾기(2단계)[문제]
# ex81_문제.py
# 소수찾기 [2단계]
# 정수 한 개를 입력받아, 2부터 해당 숫자까지의 모든 소수 출력
# 예)
# 입력 : 20
# 2, 3, 5, 7, 11, 13, 17, 19
정답
# ex81_정답.py
# 소수찾기 [2단계]
# 정수 한 개를 입력받아, 2부터 해당 숫자까지의 모든 소수 출력
# 예)
# 입력 : 20
# 2, 3, 5, 7, 11, 13, 17, 19
num = int(input("정수 입력 : "))
i = 1
while i <= num:
cnt = 0
j = 1
while j <= i:
if i % j == 0:
cnt = cnt + 1
j = j + 1
if cnt == 2:
print(i, end=" ")
i = i + 1
74. 리스트 관련 함수
# ex83.py
# 리스트 함수
nums = []
# 1.추가하기 : append()
# IndexError: list assignment index out of range
# nums[0] = 10 # 에러발생
nums.append(10)
nums.append(20)
nums.append(30)
nums.append(40)
nums.append(50)
print(nums) # [10, 20, 30, 40, 50]
# 2.삭제하기
# 1) 인덱스로 삭제하기 : del 명령어
del nums[1]
print(nums) # [10, 30, 40, 50]
# 2) 값으로 삭제하기
nums.remove(40)
print(nums) # [10, 30, 50]
# 3. 리스트 길이 : len함수
size = len(nums)
print("size =", size)
75. OMR카드(함수적용)[문제]
# ex84_문제.py
# OMR카드(리스트 함수 적용)
# 1. answer는 정답지이다.
# 2. hgd 리스트에 1~5 사이의 랜덤 숫자 5개를 저장한다.
# 3. answer와 hgd을 비교해, 정오표를 출력한다.
# 4. 한 문제당 20점으로 성적도 함께 출력한다.
answer = [1, 3, 2, 4, 5]
hgd = []
정답
# ex84_정답.py
# OMR카드(리스트 함수 적용)
# 1. answer는 정답지이다.
# 2. hgd 리스트에 1~5 사이의 랜덤 숫자 5개를 저장한다.
# 3. answer와 hgd을 비교해, 정오표를 출력한다.
# 4. 한 문제당 20점으로 성적도 함께 출력한다.
import random
answer = [1, 3, 2, 4, 5]
hgd = []
i = 0
while i < 5:
r_num = random.randint(1, 5)
hgd.append(r_num)
i = i + 1
print(answer)
print(hgd)
count = 0
i = 0
while i < 5:
if answer[i] == hgd[i]:
count = count + 1
i = i + 1
score = count * 20
print("성적 =", score)
76. for문 연습[문제]
# ex86_문제.py
# day11_for_ex02.py
# 문제 1) 5~9 출력
# 정답 1) 5, 6, 7, 8, 9
# 문제 2) 6~3 출력
# 정답 2) 6, 5, 4, 3
# 문제 3) 1~5까지의 합 출력
# 정답 3) 15
# 문제 4) 1~10중 3미만 그리고 7이상의 수만 출력
# 정답 4) 1, 2, 7, 8, 9, 10
# 문제 5) 1~10중 짝수만 출력
# 정답 5) 2, 4, 6, 8, 10
# 문제 6) 1~10중 짝수의 개수 출력
# 정답 6) 5
정답
# ex86_정답.py
# day11_for_ex02.py
# 문제 1) 5~9 출력
# 정답 1) 5, 6, 7, 8, 9
for i in range(5, 10):
print(i, end=" ")
print()
# 문제 2) 6~3 출력
# 정답 2) 6, 5, 4, 3
for i in range(6, 2, -1):
print(i, end=" ")
print()
# 문제 3) 1~5까지의 합 출력
# 정답 3) 15
total = 0
for i in range(1, 6):
total += i
print("total =", total)
# 문제 4) 1~10중 3미만 그리고 7이상의 수만 출력
# 정답 4) 1, 2, 7, 8, 9, 10
for i in range(1, 11):
if 7 <= i or i < 3:
print(i, end=" ")
print()
# 문제 5) 1~10중 짝수만 출력
# 정답 5) 2, 4, 6, 8, 10
for i in range(1, 11):
if i % 2 == 0:
print(i, end=" ")
print()
# 문제 6) 1~10중 짝수의 개수 출력
# 정답 6) 5
count = 0
for i in range(1, 11):
if i % 2 == 0:
count += 1
print("count =", count)
77. [2차원반복문] 문제1
# 문제1) 0~8까지 정사각형 모양으로 출력하고
# 그값들을 a 에 저장 후 출력
# 예) a = [0,1,2,3,4,5,6,7,8]
"""
0 1 2
3 4 5
6 7 8
"""
a = [0,0,0,0,0,0,0,0,0]
# 문제2) 0~8까지 정사각형 모양으로 출력하고
# 그값들을 a 에 거꾸로 저장 후 출력
# 예) a = [8,7,6,5,4,3,2,1,0]
"""
0 1 2
3 4 5
6 7 8
"""
a = [0,0,0,0,0,0,0,0,0]
# 문제 3) 0~8까지 정사각형 모양으로 출력하고
# 가로의 합을 a에 저장
# 예) a = [3 , 12 , 21]
"""
0 1 2
3 4 5
6 7 8
"""
a = [0,0,0]
정답
# 문제1) 0~8까지 정사각형 모양으로 출력하고
# 그값들을 a 에 저장 후 출력
# 예) a = [0,1,2,3,4,5,6,7,8]
"""
0 1 2
3 4 5
6 7 8
"""
a = [0,0,0,0,0,0,0,0,0]
k = 0
i = 0
while i < 3:
j =0
while j <3:
a[k] = k
j +=1
k +=1
i += 1
print(a)
# 문제2) 0~8까지 정사각형 모양으로 출력하고
# 그값들을 a 에 거꾸로 저장 후 출력
# 예) a = [8,7,6,5,4,3,2,1,0]
"""
0 1 2
3 4 5
6 7 8
"""
a = [0,0,0,0,0,0,0,0,0]
k = 0
kk = 8
i =0
while i < 3:
j = 0
while j < 3:
a[k] = kk
k +=1
kk -=1
j+=1
i+=1
print(a)
# 문제 3) 0~8까지 정사각형 모양으로 출력하고
# 가로의 합을 a에 저장
# 예) a = [3 , 12 , 21]
"""
0 1 2
3 4 5
6 7 8
"""
a = [0,0,0]
k = 0
i = 0
while i < 3:
total = 0
j = 0
while j <3:
total += k
j += 1
k += 1
a[i] = total
total = 0
i+=1
print(a)
a = [0,0,0]
i = 0
k = 0
while i < 9 :
print(i,end=" ")
a[k] += i
if i % 3 == 2 :
print()
k+=1
i+=1
print(a)
78. [2차원리스트] 문제1-1
a = [[0,1,2],
[3,4,5],
[6,7,8]]
#문제1) a 에 있는 값을 하나씩 출력
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
j +=1
print()
i += 1
a = [[0,1,2],
[3,4,5],
[6,7,8]]
#문제2) a 에 있는 전체 합출력
total = 0
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
j +=1
print()
i += 1
a = [["a","b","c"],
["d","e","f"],
["g","h","i"]]
#문제3) a 에 있는 인덱스를 입력하면 값출력
#예) 1,1 ==> "e"
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
j +=1
print()
i += 1
a = [[0,1,2],
[3,4,5],
[6,7,8]]
#문제4) a 에 있는 가로 합을 total 에 저장
#예) total = [3,12,21]
total = [0,0,0]
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j], end= " ")
j +=1
print()
i += 1
a = [["a","b","c"],
["d","e","f"],
["g","h","i"]]
#문제6) a 에 있는 값을 입력하면 인덱스 2개출력
#예) "a" ==> 0,0
#예) "e" ==>1,1
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
j +=1
print()
i += 1
정답
a = [[0,1,2],
[3,4,5],
[6,7,8]]
#문제2) a 에 있는 전체 합출력
total = 0
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
total += a[i][j]
j +=1
print()
i += 1
print(total)
a = [["a","b","c"],
["d","e","f"],
["g","h","i"]]
#문제3) a 에 있는 인덱스를 입력하면 값출력
#예) 1,1 ==> "e"
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
j +=1
print()
i += 1
print("인덱스 1, 2를 입력하세요")
i1 = int(input())
i2 = int(input())
print(a[i1][i2])
a = [[0,1,2],
[3,4,5],
[6,7,8]]
#문제4) a 에 있는 가로 합을 total 에 저장
#예) total = [3,12,21]
total = [0,0,0]
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j], end= " ")
j +=1
print()
i += 1
i =0
while i < 3:
j =0
t = 0
while j < 3:
t += a[i][j]
j +=1
total[i] = t
i += 1
print(total)
a = [["a","b","c"],
["d","e","f"],
["g","h","i"]]
#문제6) a 에 있는 값을 입력하면 인덱스 2개출력
#예) "a" ==> 0,0
i =0
while i < 3:
j =0
while j < 3:
print(a[i][j] , end= " ")
j +=1
print()
i += 1
print("값 을 입력하세요 ")
v1 = input()
i1 = 0
i2 = 0
i =0
while i < 3:
j =0
while j < 3:
if v1 == a[i][j]:
i1 = i
i2 = j
j +=1
i += 1
print(i1 , " " , i2)
79. [2차원리스트] 문제2
a = [[1,1,1],
[0,0,0],
[0,0,0]]
a1 = [[0,0,0],
[1,1,1],
[0,0,0]]
a2 = [[0,0,0],
[0,0,0],
[1,1,1]]
# 문제1) 가로로 1이 연속으로 3개 있는 번호 출력
#예) a ==> 1번줄 a1 ==> 2번줄 a2 ==> 3번줄
b = [[1,0,0],
[1,0,0],
[1,0,0]]
b1 = [[0,1,0],
[0,1,0],
[0,1,0]]
b2 = [[0,0,1],
[0,0,1],
[0,0,1]]
# 문제2) 1이 세로로 연속으로 3개 있는 인데스 출력
#예) b ==> 1번줄 b1 ==> 2번줄 ...
c = [[1,0,0],
[0,1,0],
[0,0,1]]
# 문제3) 1이 대각선 으로 3개 있으면 "빙고"출력
정답
# 문제1) 1이 연속으로 3개 있는 인데스 출력
#예) 0 번인덱스
a = [[1,1,1],
[0,0,0],
[0,0,0]]
a1 = [[0,0,0],
[1,1,1],
[0,0,0]]
a2 = [[0,0,0],
[0,0,0],
[1,1,1]]
i =0
result = -1
while i < 3:
if a[i][0] == 1 and a[i][1] == 1 and a[i][2] ==1:
result = i
i +=1
if result == -1:
print("없다")
else:
print(result , "번 인덱스")
# 문제1) 가로로 1이 연속으로 3개 있는 번호 출력
#예) a ==> 1번줄 a1 ==> 2번줄 a2 ==> 3번줄
a = [[1,1,1],
[0,0,0],
[0,0,0]]
a1 = [[0,0,0],
[1,1,1],
[0,0,0]]
a2 = [[0,0,0],
[0,0,0],
[1,1,1]]
i = 0
while i < 3:
j = 0
count = 0
while j < 3:
if a2[i][0] ==1 :
count+=1
j+=1
if count == 3 :
print(f"a ==> {i}번줄")
i+=1
# 문제2) 1이 세로로 연속으로 3개 있는 인데스 출력
#예) b ==> 0 번인덱스
b = [[1,0,0],
[1,0,0],
[1,0,0]]
b1 = [[0,1,0],
[0,1,0],
[0,1,0]]
b2 = [[0,0,1],
[0,0,1],
[0,0,1]]
i =0
result = -1
while i < 3:
if b[0][i] == 1 and b[1][i] == 1 and b[2][i] ==1:
result = i
i +=1
if result == -1:
print("없다")
else:
print(result , "번 인덱스")
# 문제2) 1이 세로로 연속으로 3개 있는 인데스 출력
#예) b ==> 1번줄 b1 ==> 2번줄 ...
b = [[1,0,0],
[1,0,0],
[1,0,0]]
b1 = [[0,1,0],
[0,1,0],
[0,1,0]]
b2 = [[0,0,1],
[0,0,1],
[0,0,1]]
i = 0
while i < 3:
j = 0
count = 0
while j < 3:
if b2[j][i] ==1 :
count+=1
j+=1
if count == 3 :
print(f"b ==> {i}번줄")
i+=1
c = [[1,0,0],
[0,1,0],
[0,0,1]]
# 문제3) 1이 대각선 으로 3개 있으면 "빙고"출력
if c[0][0] == 1 and c[1][1] == 1 and c[2][2] == 1:
print("빙고")
if c[0][2] == 1 and c[1][1] ==1 and c[2][0] == 1:
print("빙고")
80. [2차원리스트] 문제3
a = [6,3,4]
b = [1,6,4]
# a와 b를 비교해서 겹치는 숫자가 있으면 출력
# 예) 6, 4
student = [
[1001, 100],
[1002, 30],
[1003, 40]
]
# 문제1) 학번을 입력하면 점수 출력
# 예) 1002 ==> 30
# 문제2) 전체 학생 총점 출력
# 예) 100 + 30 + 40
# 문제3) 학번2개를 입력하고 점수 교환
# 예) 1001, 1003 ==> student = [[1001, 40],[1002, 30],[1003, 100]]
정답
a = [6,3,4]
b = [1,6,4]
# a와 b를 비교해서 겹치는 숫자가 있으면 출력
# 예) 6, 4
i = 0
while i < 3:
j = 0
while j < 3:
if a[i] == b[j]:
print(a[i])
j+=1
i+=1
a = [6,3,4]
b = [1,6,4]
# a와 b를 비교해서 겹치는 숫자가 있으면 출력
# 예) 6, 4
student = [
[1001, 100],
[1002, 30],
[1003, 40]
]
# 문제1) 학번을 입력하면 점수 출력
# 예) 1002 ==> 30
hakbun = int(input("학번을 입력해주세요"))
i = 0
while i < 3:
if student[i][0] == hakbun :
print(student[i][1])
i+=1
# 문제2) 전체 학생 총점 출력
# 예) 100 + 30 + 40
i = 0
sum = 0
while i < 3:
sum += student[i][1]
i+=1
print(sum)
# 문제3) 학번2개를 입력하고 점수 교환
# 예) 1001, 1003 ==> student = [[1001, 40],[1002, 30],[1003, 100]]
hakbun_one = int(input("학번을 입력해주세요"))
hakbun_two = int(input("학번을 입력해주세요"))
i = 0
index_one = -1
index_two = -1
while i < 3:
if student[i][0] == hakbun_one :
index_one = i
if student[i][0] == hakbun_two :
index_two = i
i+=1
temp = student[index_one]
student[index_one] = student[index_two]
student[index_two] = temp
print(student)
81. [2차원 리스트] 문제4
student = [
[1001, 100],
[1002, 30],
[1003, 40],
[1004, 70]
]
result =[0,0,0,0]
# 문제1) 합격한 사람(60점이상) 번호를 result 에 저장 후 출력
#예) result = [1001,1004,0,0]
정답
i = 0
k = 0
while i < len(student) :
if student[i][1] > 60 :
result[k] = student[i][0]
k+=1
i+=1
print(result)
82. 최대값 구하기(3단계)[문제]
# ex87_문제.py
# 최대값 구하기[3단계]
# 1. 가장 큰 값을 찾아 입력한다.
# 2. 정답이면 해당 값을 0으로 변경한다.
# 3. arr배열의 모든 값이 0으로 변경되면 프로그램은 종료된다.
# 예)
# 11, 87, 42, 100, 24
# 입력 : 100
#
# 11, 87, 42, 0, 24
# 입력 : 87
#
# 11, 0, 42, 0, 24
nums = [11, 87, 42, 100, 24]
정답
# ex87_정답.py
# 최대값 구하기[3단계]
# 1. 가장 큰 값을 찾아 입력한다.
# 2. 정답이면 해당 값을 0으로 변경한다.
# 3. arr배열의 모든 값이 0으로 변경되면 프로그램은 종료된다.
# 예)
# 11, 87, 42, 100, 24
# 입력 : 100
#
# 11, 87, 42, 0, 24
# 입력 : 87
#
# 11, 0, 42, 0, 24
nums = [11, 87, 42, 100, 24]
i = 0
while i < len(nums):
print(nums)
answer = 0
answer_idx = 0
j = 0
while j < len(nums):
if answer < nums[j]:
answer = nums[j]
answer_idx = j
j = j + 1
my_answer = int(input("최대값 입력 : "))
if answer == my_answer:
nums[answer_idx] = 0
i = i + 1
83. 1 to 8[문제]
# ex88_문제.py
# 1 to 50[2단계] : 1 to 9
# 1. arr배열에 1~9 사이의 숫자를 저장한다.
# 2. shuffle을 통해 숫자를 섞는다.
# 3. 사용자는 1부터 순서대로 해당 위치 값을 입력한다.
# 4. 정답을 맞추면 해당 값은 0으로 변경되어 모든 값이 0이되면 게임은 종료된다.
# 리스트 방 9개를 생성하고,
# 각 방의 값을 모두 0으로 초기화
arr = [0 for i in range(9)]
print(len(arr))
print(arr)
정답
# ex88_정답.py
# 1 to 50[2단계] : 1 to 9
# 1. arr배열에 1~9 사이의 숫자를 저장한다.
# 2. shuffle을 통해 숫자를 섞는다.
# 3. 사용자는 1부터 순서대로 해당 위치 값을 입력한다.
# 4. 정답을 맞추면 해당 값은 0으로 변경되어 모든 값이 0이되면 게임은 종료된다.
import random
# 리스트 방 9개를 생성하고,
# 각 방의 값을 모두 0으로 초기화
arr = [0 for i in range(9)]
print(len(arr))
print(arr)
# 1~9 숫자 저장하기
i = 0
while i < len(arr):
arr[i] = i + 1
i = i + 1
# suffle
i = 10
while i < 100:
r = random.randint(0, 8)
temp = arr[0]
arr[0] = arr[r]
arr[r] = temp
i = i + 1
print(arr)
# 게임 시작
game_num = 1
while True:
i = 0
while i < len(arr):
print(arr[i], end=" ")
if i % 3 == 2:
print()
i = i + 1
index = int(input("인덱스 입력 : "))
if arr[index] == game_num:
arr[index] = 0
game_num += 1
if game_num == 10:
print("게임종료")
break
주의사항 및 Tip
아래는 내가 처음 답을 구했을때 코딩인데, 이 코딩의 문제점은 굳이 값이 1인 위치를 찾으려고 해서 그 위치와 내가 입력한 index가 같을경우 연산이 되도록 했다
하지만 굳이 그럴 필요없이, 원래의 답처럼 어차피 나는 1의 위치를 알고 있으므로 내가 입력한 index의 결과값이 1일경우 연산되도록 하면 된다.
import random
arr = [0 for i in range(9)]
print(len(arr))
print(arr)
i = 0
while i < 9 :
arr[i] = i+1
i+=1
#suffle
i = 0
while i < 100 :
r = random.randint(0,8)
temp = arr[0]
arr[0] = arr[r]
arr[r] = temp
i+=1
#1 to 9
run = True
k = 1
index = 0
count = 0
while run :
print(arr)
i = 0
while i < 9 :
if arr[i] == k :
index = i
i+=1
my_index = int(input("1부터 순서대로 해당 위치 값을 입력한다."))
if my_index == index :
arr[index] = 0
count+=1
if count == 9:
run = False
84. 숫자이동(2단계)[문제]
# ex89_문제.py
# 숫자이동[2단계]
# 1. 숫자2는 캐릭터이다.
# 2. 숫자1을 입력하면, 캐릭터가 왼쪽으로
# 숫자2를 입력하면, 캐릭터가 오른쪽으로 이동한다.
# 3. 단, 좌우 끝에 도달했을 때, 예외처리를 해야한다.
# 4. 숫자 1은 벽이다. 벽을 만나면 이동할 수 없다.
# 5. 단, 숫자3을 입력하면, 벽을 격파할 수 있다.
game = [0, 0, 1, 0, 2, 0, 0, 1, 0]
정답
# ex89_정답.py
# 숫자이동[2단계]
# 1. 숫자2는 캐릭터이다.
# 2. 숫자1을 입력하면, 캐릭터가 왼쪽으로
# 숫자2를 입력하면, 캐릭터가 오른쪽으로 이동한다.
# 3. 단, 좌우 끝에 도달했을 때, 예외처리를 해야한다.
# 4. 숫자 1은 벽이다. 벽을 만나면 이동할 수 없다.
# 5. 단, 숫자3을 입력하면, 벽을 격파할 수 있다.
game = [0, 0, 1, 0, 2, 0, 0, 1, 0]
# 캐릭터 위치 저장
player = 0
i = 0
while i < len(game):
if game[i] == 2:
player = i
i = i + 1
# 게임시작
while True:
# 화면출력
j = 0
while j < len(game):
if game[j] == 0:
print("_", end="")
elif game[j] == 1:
print("[]", end="")
elif game[j] == 2:
print("옷", end="")
j = j + 1
print()
# 입력받기
move = int(input("왼쪽(1), 오른쪽(2) : "))
if move == 1:
if player - 1 >= 0:
if game[player - 1] == 1:
punch = int(input("벽을 만났다! 격파(3) : "))
if punch != 3:
continue
game[player] = 0
player -= 1
game[player] = 2
elif move == 2:
if player + 1 < len(game):
if game[player + 1] == 1:
punch = int(input("벽을 만났다! 격파(3) : "))
if punch != 3:
continue
game[player] = 0
player += 1
game[player] = 2
85. EXIT 게임[문제]
# ex90_문제.py
# EXIT 게임
# 1. game배열에서 exit변수와 값이 같은 위치를 입력한다.
# 2. 정답을 맞추면 exit변수는 1증가한다.
# 3. exit변수의 값이 16이되면 게임은 종료된다.
exit_num = 10
game = [11, 15, 10, 14, 12, 13]
정답
# ex90_정답.py
# EXIT 게임
# 1. game배열에서 exit변수와 값이 같은 위치를 입력한다.
# 2. 정답을 맞추면 exit변수는 1증가한다.
# 3. exit변수의 값이 16이되면 게임은 종료된다.
exit_num = 10
game = [11, 15, 10, 14, 12, 13]
while True:
print(game)
index = int(input("%d의 위치 입력 : " % exit_num))
if game[index] == exit_num:
exit_num += 1
if exit_num == 16:
print("게임 종료")
break
86. 중복숫자 금지(2단계)[문제]
# ex91_문제.py
# 중복숫자 금지[2단계]
# 1. arr배열에 1~10 사이의 랜덤 숫자 5개를 저장한다.
# 2. 단 중복되는 숫자가 없어야 한다.
nums = [0 for i in range(5)]
print(nums)
정답
# ex91_정답.py
# 중복숫자 금지[2단계]
# 1. arr배열에 1~10 사이의 랜덤 숫자 5개를 저장한다.
# 2. 단 중복되는 숫자가 없어야 한다.
import random
nums = [0 for i in range(5)]
print(nums)
i = 0
while i < len(nums):
r_num = random.randint(1, 10)
check = 0
j = 0
while j < i:
if r_num == nums[j]:
check = 1
j = j + 1
if check == 0:
nums[i] = r_num
i = i + 1
print(nums)
주의사항 및 Tip
이 문제에서 중요하게 봐야할점은 아래 코드 부분이다
j에서 i까지 배열이 도는데 그 이유를 아는것이 중요하다
while j < i:
if r_num == nums[j]:
check = 1
j = j + 1
87. 숫자 야구 게임[문제]
# ex92_문제.py
# 숫자 야구 게임
# 1. me에 1~9 사이의 숫자 3개를 저장
# (단, 중복되는 숫자는 저장 불가)
# 2. com과 me를 비교해 정답을 맞출 때까지 반복
# 3. 숫자와 자리가 같으면 strike += 1
# 숫자만 같고 자리가 틀리면 ball += 1
# 예)
# 정답 : 1 7 3
# 3 1 5 : 2b
# 1 5 6 : 1s
# ...
com = [1, 7, 3]
me = [0, 0, 0]
정답
# ex92_정답.py
# 숫자 야구 게임
# 1. me에 1~9 사이의 숫자 3개를 저장
# (단, 중복되는 숫자는 저장 불가)
# 2. com과 me를 비교해 정답을 맞출 때까지 반복
# 3. 숫자와 자리가 같으면 strike += 1
# 숫자만 같고 자리가 틀리면 ball += 1
# 예)
# 정답 : 1 7 3
# 3 1 5 : 2b
# 1 5 6 : 1s
# ...
import random
com = [1, 7, 3]
me = [0, 0, 0]
while True:
ball = 0
strike = 0
# 1~9 사이의 숫자 3개 입력받기(단, 중복금지)
i = 0
while i < 3:
num = int(input("숫자%d 입력 : " % (i+1)))
check = 0
j = 0
while j < i:
if num == me[j]:
check = 1
j = j + 1
if check == 0:
me[i] = num
i = i + 1
print(me)
# 검사하기
i = 0
while i < 3:
j = 0
while j < 3:
if com[i] == me[j]:
if i == j:
strike += 1
else:
ball += 1
j = j + 1
i = i + 1
print("strike =", strike, "ball =", ball)
# 게임종료
if strike == 3:
break
주의사항 및 Tip
이 문제에서 중요하게 봐야할점은 아래 코드 부분이다
j에서 i까지 배열이 도는데 그 이유를 아는것이 중요하다
while j < i:
if num == me[j]:
check = 1
j = j + 1
88. 1 to 18[문제]
# ex93_문제.py
# 1 to 50[3단계] : 1 to 18
# 1. 구글에서 1 to 50 이라고 검색한다.
# 2. 1 to 50 순발력 게임을 선택해 게임을 실습해본다.
# 3. 위 게임을 숫자범위를 좁혀 1 to 18로 직접 구현한다.
# 4. 숫자 1~9는 front 배열에 저장하고,
# 숫자 10~18은 back 배열에 저장한다.
size = 9
front = [0 for i in range(size)]
back = [0 for i in range(size)]
print(front)
print(back)
정답
# ex93_정답.py
# 1 to 50[3단계] : 1 to 18
# 1. 구글에서 1 to 50 이라고 검색한다.
# 2. 1 to 50 순발력 게임을 선택해 게임을 실습해본다.
# 3. 위 게임을 숫자범위를 좁혀 1 to 18로 직접 구현한다.
# 4. 숫자 1~9는 front 배열에 저장하고,
# 숫자 10~18은 back 배열에 저장한다.
import random
size = 9
front = [0 for i in range(size)]
back = [0 for i in range(size)]
# 숫자 저장하기
i = 0
while i < size:
front[i] = i + 1
back[i] = 10 + i
i = i + 1
# suffle
i = 0
while i < 100:
r_num = random.randint(0, 8)
temp = front[0]
front[0] = front[r_num]
front[r_num] = temp
r_num = random.randint(0, 8)
temp = back[0]
back[0] = back[r_num]
back[r_num] = temp
i = i + 1
# 게임 시작
game_num = 1
while True:
i = 0
while i < size:
if front[i] == 0:
print("\t", end="")
else:
print(front[i], end="\t")
if i % 3 == 2:
print("\n")
i = i + 1
print()
if game_num == 19:
print("게임 종료\n")
break
index = int(input("%d의 위치 입력 : " % game_num))
if front[index] == game_num:
if 1 <= game_num and game_num <= 9:
front[index] = back[index]
else:
front[index] = 0
game_num += 1
주의사항 및 Tip
이 문제에서는 game_num의 범위에 따라 값이 바뀌는것을 주목하자
89. ATM(4단계)[문제]
# ex94_문제.py
# ATM[4단계] : 전체 기능구현
# 1. 회원가입
# . id와 pw를 입력받아 가입
# . 가입 시 돈 1000원 부여
# . id 중복체크
# 2. 회원탈퇴
# . 로그인시에만 이용가능
# 3. 로그인
# . id와 pw를 입력받아 로그인
# . 로그아웃 상태에서만 이용가능
# 4. 로그아웃
# . 로그인시에만 이용가능
# 5. 입금
# . 로그인시에만 이용가능
# 6. 이체
# . 로그인시에만 이용가능
# 7. 잔액조회
# . 로그인시에만 이용가능
size = 5
ids = [0 for i in range(size)]
pws = [0 for i in range(size)]
moneys = [0 for i in range(size)]
count = 0
log = -1
while True:
print("=== 메가IT ATM ===")
print("[1]회원가입")
print("[2]회원탈퇴")
print("[3]로그인")
print("[4]로그아웃")
print("[5]입금")
print("[6]이체")
print("[7]잔액조회")
print("[0]종료")
choice = int(input("메뉴 선택 : "))
if choice == 1:
pass
elif choice == 2:
pass
elif choice == 3:
pass
elif choice == 4:
pass
elif choice == 5:
pass
elif choice == 6:
pass
elif choice == 7:
pass
elif choice == 0:
print("프로그램 종료")
break
정답
# ex94_정답.py
# ATM[4단계] : 전체 기능구현
# 1. 회원가입
# . id와 pw를 입력받아 가입
# . 가입 시 돈 1000원 부여
# . id 중복체크
# 2. 회원탈퇴
# . 로그인시에만 이용가능
# 3. 로그인
# . id와 pw를 입력받아 로그인
# . 로그아웃 상태에서만 이용가능
# 4. 로그아웃
# . 로그인시에만 이용가능
# 5. 입금
# . 로그인시에만 이용가능
# 6. 이체
# . 로그인시에만 이용가능
# 7. 잔액조회
# . 로그인시에만 이용가능
size = 5
accs = [0 for i in range(size)]
pws = [0 for i in range(size)]
moneys = [0 for i in range(size)]
count = 0
log = -1
while True:
print("log =", log)
i = 0
while i < count:
print("ID[%d] => %d원" % (accs[i], moneys[i]))
i = i + 1
print()
print("=== 메가IT ATM ===")
print("[1]회원가입")
print("[2]회원탈퇴")
print("[3]로그인")
print("[4]로그아웃")
print("[5]입금")
print("[6]이체")
print("[7]잔액조회")
print("[0]종료")
choice = int(input("메뉴 선택 : "))
if choice == 1:
my_acc = int(input("ID 입력 : "))
my_pw = int(input("Pw 입력 : "))
# id 중복검사
check = 0
i = 0
while i < count:
if my_acc == accs[i]:
check = 1
i = i + 1
if check == 1:
print("[메세지]ID가 중복됩니다.")
else:
accs[count] = my_acc
pws[count] = my_pw
moneys[count] = 1000
count += 1
print("[메세지]회원가입을 축하합니다.")
elif choice == 2:
if log != -1:
i = log
while i < count - 1:
accs[i] = accs[i + 1]
pws[i] = pws[i + 1]
moneys[i] = moneys[i + 1]
i = i + 1
count = count - 1
log = -1
print("[메세지]탈퇴되었습니다.")
else:
print("[메세지]로그인 후 이용가능합니다.")
elif choice == 3:
if log == -1:
my_acc = int(input("ID 입력 : "))
my_pw = int(input("Pw 입력 : "))
i = 0
while i < count:
if accs[i] == my_acc and pws[i] == my_pw:
log = i
i = i + 1
if log == -1:
print("[메세지]ID와 PW를 확인해주세요.")
else:
print("[메세지]%d님, 환영합니다." % accs[log])
else:
print("[메세지]이미 로그인 중입니다.")
elif choice == 4:
if log != -1:
log = -1
print("[메세지]로그아웃 되었습니다.")
else:
print("[메세지]로그인 후 이용가능합니다.")
elif choice == 5:
if log != -1:
money = int(input("입금할 금액 입력 : "))
moneys[log] += money
print("[메세지]입금되었습니다.")
else:
print("[메세지]로그인 후 이용가능합니다.")
elif choice == 6:
if log != -1:
account = int(input("이체할 계좌번호 입력 : "))
# 계좌번호 확인
check = -1
i = 0
while i < count:
if accs[i] == account:
check = i
i = i + 1
if check == -1:
print("[메세지]계좌번호를 확인해주세요.")
else:
money = int(input("이체할 금액 입력 : "))
if money <= moneys[log]:
moneys[log] -= money
moneys[check] += money
print("[메세지]이체를 완료하였습니다.")
else:
print("[메세지]계좌잔액이 부족합니다.")
else:
print("[메세지]로그인 후 이용가능합니다.")
elif choice == 7:
if log != -1:
print(moneys[log], "원 남았습니다.")
else:
print("[메세지]로그인 후 이용가능합니다.")
elif choice == 0:
print("프로그램 종료")
break
90. 내림차순 정렬[문제]
# ex95_문제.py
# 정렬하기
# 1. 인덱스 0번이 나머지를 검사한다.
# 2. 제일 큰 값을 찾아 교환한다.
# 3. 인덱스 1증가한다.
# 4. [1~3]을 끝까지 반복한다.
# 예)
# 10, 50, 30, 40, 80, 7
# 80, 50, 30, 40, 10, 7
# 80, 50, 30, 40, 10, 7
# 80, 50, 40, 30, 10, 7
scores = [10, 50, 30, 40, 80, 7]
정답
# ex95_정답.py
# 정렬하기
# 1. 인덱스 0번이 나머지를 검사한다.
# 2. 제일 큰 값을 찾아 교환한다.
# 3. 인덱스 1증가한다.
# 4. [1~3]을 끝까지 반복한다.
# 예)
# 10, 50, 30, 40, 80, 7
# 80, 50, 30, 40, 10, 7
# 80, 50, 30, 40, 10, 7
# 80, 50, 40, 30, 10, 7
scores = [10, 50, 30, 40, 80, 7]
i = 0
while i < len(scores):
max_num = scores[i]
max_idx = i
j = i
while j < len(scores):
if max_num < scores[j]:
max_num = scores[j]
max_idx = j
j = j + 1
temp = scores[i]
scores[i] = scores[max_idx]
scores[max_idx] = temp
i = i + 1
print(scores)
Leave a comment