5.python을 이용한 알고리즘 문제(31~59)

39 minute read

31. 영수증 출력(2단계)[문제]

# ex44_문제.py

# 영수증 출력[2단계]
# 1. 5번 주문을 받는다.
# 2. 주문이 끝난 후, 돈을 입력받는다.
# 3. 각 메뉴별 주문수량과 총금액을 출력한다.
# 예)
# 메뉴 선택 : 1
# 메뉴 선택 : 1
# 메뉴 선택 : 2
# 메뉴 선택 : 2
# 메뉴 선택 : 3
# 총 금액 = 31300원
# 현금 입력 : 32000
# === 롯데리아 영수증 ===
# 1. 불고기 버거 : 2개
# 2. 새우    버거 : 2개
# 3. 콜         라 : 1개
# 4. 총   금   액 : 31300원
# 5. 잔         돈 : 700원

price1 = 8700
price2 = 6200
price3 = 1500

print("=== 롯데리아 ===")
print("1.불고기 버거 :", price1)
print("2.새우   버거 :", price2)
print("3.콜       라 :", price3)

정답

# ex44_정답.py

# 영수증 출력[2단계]
# 1. 5번 주문을 받는다.
# 2. 주문이 끝난 후, 돈을 입력받는다.
# 3. 각 메뉴별 주문수량과 총금액을 출력한다.
# 예)
# 메뉴 선택 : 1
# 메뉴 선택 : 1
# 메뉴 선택 : 2
# 메뉴 선택 : 2
# 메뉴 선택 : 3
# 총 금액 = 31300원
# 현금 입력 : 32000
# === 롯데리아 영수증 ===
# 1. 불고기 버거 : 2개
# 2. 새우    버거 : 2개
# 3. 콜         라 : 1개
# 4. 총   금   액 : 31300원
# 5. 잔         돈 : 700원

price1 = 8700
price2 = 6200
price3 = 1500

print("=== 롯데리아 ===")
print("1.불고기 버거 :", price1)
print("2.새우   버거 :", price2)
print("3.콜       라 :", price3)

cnt1 = 0
cnt2 = 0
cnt3 = 0

i = 1
while i <= 5:
    choice = int(input("메뉴를 선택하세요 : "))

    if choice == 1:
        cnt1 = cnt1 + 1
    elif choice == 2:
        cnt2 = cnt2 + 1
    elif choice == 3:
        cnt3 = cnt3 + 1

    i = i + 1

total = cnt1*price1 + cnt2*price2 + cnt3*price3
print("총 금액 =", total)

my_money = int(input("돈을 입력하세요 : "))

charge = my_money - total
if charge < 0:
    print("현금이 부족합니다.")
else:
    print("=== 롯데리아 영수증===")
    print("1.불고기 버거 :", cnt1)
    print("2.새우   버거 :", cnt2)
    print("3.콜       라 :", cnt3)
    print("총 금액 =", total)
    print("잔돈 =", charge)

32. 반복문 종료[문제]

# ex45_문제.py

# 반복문 종료(-100)
# 1. 무한 반복을 하면서 숫자를 입력받는다.
# 2. 입력한 숫자가 -100이면, 프로그램은 종료된다.

정답

# ex45_정답.py

# 반복문 종료(-100)
# 1. 무한 반복을 하면서 숫자를 입력받는다.
# 2. 입력한 숫자가 -100이면, 프로그램은 종료된다.

run = True
while run:
    exit_num = int(input("숫자 입력(-100은 종료) : "))

    if exit_num == -100:
        run = False
i =0;
while i != -100:
  i = int(input("숫자를 입력하세요"))
i =1;
while i:
  input_number = int(input("숫자를 입력하세요"))

  if input_number == -100:
    break;

33. Up & Down 게임(2단계)[문제]

# ex46_정답.py

# Up & Down 게임[2단계]
# 1. 정답을 맞추면 게임은 종료된다.
# 2. 100점부터 시작해 오답을 입력할 때마다 5점씩 차감된다.
# 3. 게임 종료 후, 점수를 출력한다.

import random

r_num = random.randint(1, 100)
print("치트키 =", r_num)

count = 0
my_answer = 0
while r_num != my_answer:
    my_answer = int(input("정답 입력 : "))

    if r_num != my_answer:
        count = count + 1

score = 100 - (count * 5)
print("성적 =", score)

정답

import random


answer = 33;
run = true;
total = 100

while run:

  my_answer = int(input("정답을 입력하세요"))
  if my_answer == answer:
    run=false
  else
    total = total - 5

print(total)

34. ATM(3단계:로그인/로그아웃)[문제]

# ex47_문제.py

# ATM[3단계]
# 1. 로그인
# . 로그인 후 재 로그인 불가
# . 로그아웃 상태에서만 이용 가능
# 2. 로그아웃
# . 로그인 후 이용가능

db_acc1 = 1111
db_pw1 = 1234

db_acc2 = 2222
db_pw2 = 2345

log = -1          # -1(로그아웃), 1(dbAcc1로그인), 2(dbAcc2로그인)

run = True
while run:
    print("1.로그인")
    print("2.로그아웃")
    print("0.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        pass
    elif choice == 2:
        pass
    elif choice == 0:
        run = False
        print("프로그램 종료")

정답

# ex47_정답.py

# ATM[3단계]
# 1. 로그인
# . 로그인 후 재 로그인 불가
# . 로그아웃 상태에서만 이용 가능
# 2. 로그아웃
# . 로그인 후 이용가능

db_acc1 = 1111
db_pw1 = 1234

db_acc2 = 2222
db_pw2 = 2345

log = -1          # -1(로그아웃), 1(dbAcc1로그인), 2(dbAcc2로그인)

run = True
while run:
    print("1.로그인")
    print("2.로그아웃")
    print("0.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        if log == -1:
            my_id = int(input("ID 입력 : "))
            my_pw = int(input("PW 입력 : "))

            if my_id == db_acc1 and my_pw == db_pw1:
                log = 1
                print(db_acc1, "환영합니다.")
            elif my_id == db_acc2 and my_pw == db_pw2:
                log = 2
                print(db_acc2, "환영합니다.")
            else:
                print("계좌번호와 비밀번호를 확인해주세요.")
        else:
            if log == 1:
                print(db_acc1, "로그인 중...")
            elif log == 2:
                print(db_acc2, "로그인 중...")
    elif choice == 2:
        if log != -1:
            log = -1
            print("로그아웃 되었습니다.")
        else:
            print("로그인 후 이용해주세요.")
    elif choice == 0:
        run = False
        print("프로그램 종료")

35. ATM(3단계:입금/출금/이체/조회)[문제]

# ex48_문제.py

# ATM[3단계]
# 1. 입금
# . 입금할 금액을 입력받아, myMoney에 입금
# 2. 출금
# . 출금할 금액을 입력받아, myMoney에서 출금
# . 단, 출금할 금액이 myMoney 잔액을 초과할 경우 출금불가
# 3. 이체
# . yourAcc 계좌번호를 입력받아, 이체
# . 이체할 금액이 myMoney 잔액을 초과할 경우 이체 불가
# . 이체 후 yourMoney 잔액 증가
# 4. 조회
# . myMoney와 yourMoney 잔액 모두 출력

my_acc = 1111
my_money = 50000

your_acc = 2222
your_money = 70000

run = True
while run:
    print("1.입금")
    print("2.출금")
    print("3.이체")
    print("4.조회")
    print("0.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        pass
    elif choice == 2:
        pass
    elif choice == 3:
        pass
    elif choice == 4:
        pass
    elif choice == 0:
        run = False
        print("프로그램 종료")

정답

# ex48_정답.py

# ATM[2단계]
# 1. 입금
# . 입금할 금액을 입력받아, myMoney에 입금
# 2. 출금
# . 출금할 금액을 입력받아, myMoney에서 출금
# . 단, 출금할 금액이 myMoney 잔액을 초과할 경우 출금불가
# 3. 이체
# . yourAcc 계좌번호를 입력받아, 이체
# . 이체할 금액이 myMoney 잔액을 초과할 경우 이체 불가
# . 이체 후 yourMoney 잔액 증가
# 4. 조회
# . myMoney와 yourMoney 잔액 모두 출력

my_acc = 1111
my_money = 50000

your_acc = 2222
your_money = 70000

run = True
while run:
    print("1.입금")
    print("2.출금")
    print("3.이체")
    print("4.조회")
    print("0.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        money = int(input("입금할 금액 입력 : "))
        my_money = my_money + money
    elif choice == 2:
        money = int(input("출금할 금액 입력 : "))
        my_money = my_money - money
    elif choice == 3:
        acc = int(input("이체할 계좌번호 입력 : "))
        if acc == your_acc:
            money = int(input("이체할 금액 입력 : "))
            if money <= my_money:
                my_money -= money   # my_money = my_money - money
                your_money += money
            else:
                print("계좌잔액이 부족합니다.")
        else:
            print("계좌번호를 확인해주세요.")
    elif choice == 4:
        print("my_money =", my_money)
        print("your_money =", your_money)
    elif choice == 0:
        run = False
        print("프로그램 종료")

36. ATM(3단계:종합)[문제]

# ex49_문제.py

# ATM[3단계]
# 1. 로그인
# . 로그인 후 재 로그인 불가
# . 로그아웃 상태에서만 이용 가능
# 2. 로그아웃
# . 로그인 후 이용가능
# 3. 입금
# . 로그인 후 이용가능
# 4. 출금
# . 로그인 후 이용가능
# 5. 이체
# . 로그인 후 이용가능
# 6. 조회
# . 로그인 후 이용가능
# 7. 종료


db_acc1 = 1111
db_pw1 = 1234
db_money1 = 50000

db_acc2 = 2222
db_pw2 = 2345
db_money2 = 70000

log = -1

run = True
while run:
    print("1.로그인")
    print("2.로그아웃")
    print("3.입금")
    print("4.출금")
    print("5.이체")
    print("6.조회")
    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 == 0:
        run = False
        print("프로그램 종료")

정답

# ex49_정답.py

# ATM[3단계]
# 1. 로그인
# . 로그인 후 재 로그인 불가
# . 로그아웃 상태에서만 이용 가능
# 2. 로그아웃
# . 로그인 후 이용가능
# 3. 입금
# . 로그인 후 이용가능
# 4. 출금
# . 로그인 후 이용가능
# 5. 이체
# . 로그인 후 이용가능
# 6. 조회
# . 로그인 후 이용가능
# 7. 종료


db_acc1 = 1111
db_pw1 = 1234
db_money1 = 50000

db_acc2 = 2222
db_pw2 = 2345
db_money2 = 70000

log = -1

run = True
while run:
    print("<로그인 상태>")
    if log == 1:
        print(db_acc1, "로그인 중...")
    elif log == 2:
        print(db_acc2, "로그인 중...")
    else:
        print("로그아웃")

    print("1.로그인")
    print("2.로그아웃")
    print("3.입금")
    print("4.출금")
    print("5.이체")
    print("6.조회")
    print("0.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        if log == -1:
            acc = int(input("ID 입력 : "))
            pw = int(input("PW 입력 : "))

            if acc == db_acc1 and pw == db_pw1:
                log = 1
                print(db_acc1, "환영합니다.")
            elif  acc == db_acc2 and pw == db_pw2:
                log = 2
                print(db_acc2, "환영합니다.")
            else:
                print("계좌번호와 비밀번호를 확인해주세요.")
        else:
            if log == 1:
                print(db_acc1, "로그인 중...")
            elif log == 2:
                print(db_acc2, "로그인 중...")
    elif choice == 2:
        if log != -1:
            log = -1
            print("로그아웃 되었습니다.")
        else:
            print("로그인 후 이용해주세요.")
    elif choice == 3:
        if log != -1:
            money = int(input("입금할 금액 입력 : "))

            if log == 1:
                db_money1 += money
            elif log == 2:
                db_money2 += money
        else:
            print("로그인 후 이용해주세요.")

    elif choice == 4:
        if log != -1:
            money = int(input("출금할 금액 입력 : "))

            if log == 1:
                if money <= db_money1:
                    db_money1 -= money
                else:
                    print("계좌잔액이 부족합니다.")
            elif log == 2:
                 if money <= db_money2:
                    db_money2 -= money
                 else:
                    print("계좌잔액이 부족합니다.")
        else:
            print("로그인 후 이용해주세요.")
    elif choice == 5:
        if log != -1:
            acc = int(input("이체할 계좌번호 입력 : "))

            if log == 1:
                if acc == db_acc2:
                    money = int(input("이체할 금액 입력 : "))

                    if money <= db_money1:
                        db_money1 -= money
                        db_money2 += money
                    else:
                        print("계좌잔액이 부족합니다.")
                else:
                    print("계좌번호를 확인해주세요.")
            elif log == 2:
                if acc == db_acc1:
                    money = int(input("이체할 금액 입력 입력 : "))

                    if money <= db_money2:
                        db_money2 -= money
                        db_money1 += money
                    else:
                        print("계좌잔액이 부족합니다.")
                else:
                    print("계좌번호를 확인해주세요.")
        else:
            print("로그인 후 이용해주세요.")
    elif choice == 6:
        if log != -1:
            print("db_money1 =", db_money1)
            print("db_money2 =", db_money2)
        else:
            print("로그인 후 이용해주세요.")
    elif choice == 0:
        run = False
        print("프로그램 종료")

37. 베스킨라빈스31[문제]

정답

# ex50_문제.py

# 베스킨라빈스31
# 1. p1과 p2가 번갈아가면서 1~3을 입력한다.
# 2. br은 p1과 p2의 입력값을 누적해서 저장한다.
# 3. br이 31을 넘으면 게임은 종료된다. (넘긴쪽이 패배)
# 4. 승리자를 출력한다.
#
# 예)
# 1턴 : p1(2)	br(2)
# 2턴 : p2(1)	br(3)
# 3턴 : p1(3)	br(6)

p1 = 0
p2 = 0

br = 0
turn = 0

정답

p1 = 0
p2 = 0

br = 0
turn = 0

while br<=31:
    if turn % 2 == 0:
        p1 = int(input("p1 입력(1~3) : "))
        if 1 <= p1 and p1 <= 3:
            br = br + p1
            turn = turn + 1
    elif turn % 2 == 1:
        p2 = int(input("p2 입력(1~3) : "))
        if 1 <= p2 and p2 <= 3:
            br = br + p2
            turn = turn + 1
    print("br =", br)

    if br > 31:
        if turn % 2 == 0:
            print("p1승리")
        elif turn % 2 == 1:
            print("p2승리")


        print("게임 종료")

# ex50_문제.py

# 베스킨라빈스31
# 1. p1과 p2가 번갈아가면서 1~3을 입력한다.
# 2. br은 p1과 p2의 입력값을 누적해서 저장한다.
# 3. br이 31을 넘으면 게임은 종료된다. (넘긴쪽이 패배)
# 4. 승리자를 출력한다.
#
# 예)
# 1턴 : p1(2)	br(2)
# 2턴 : p2(1)	br(3)
# 3턴 : p1(3)	br(6)

p1 = 0
p2 = 0

br = 0
turn = 0



while True :

    p1 = int(input("p1 : 1~3을 입력하세요"))
    br += p1
    print(br)
    turn = "p2"

    if br > 31:
      print("승자는",turn)
      break;

    p2 = int(input("p2 : 1~3을 입력하세요"))
    br += p2
    print(br)
    turn = "p1"

    if br > 31:
      print("승자는",turn)
      break;


주의사항 및 tip

이런식으로 할경우, p1이 br의 31을 넘어갔을때 바로 p2가 이겼다고 나와야하는데 그러지 못하고 p2차례로 넘어가버리게 된다

따라서 이 문제는 입력하고 결과확인하고, 입력하고 결과확인하는 순서로 진행되어야한다

p1 = 0
p2 = 0

br = 0
turn = 0


while br < 31 :

    p1_value = int(input("1~3 중 하나를 입력하세요"))

    turn+=1
    br += p1_value

    print(f"{turn}턴 : p1{p1_value} br{br}")

    p2_value = int(input("1~3 중 하나를 입력하세요"))

    turn+=1
    br += p2_value

    print(f"{turn}턴 : p1{p2_value} br{br}")

38. 369게임(2단계)[문제]

# ex51_문제.py

# 369게임[2단계]
# 1. 1~50까지 반복을 한다.
# 2. 그 안에서 해당 숫자의 369게임의 결과를 출력한다.
# 예) 1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 ...

정답

# ex51_정답.py

# 369게임[2단계]
# 1. 1~50까지 반복을 한다.
# 2. 그 안에서 해당 숫자의 369게임의 결과를 출력한다.
# 예) 1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 ...

i = 1
while i <= 50:

    x = i // 10      # 십의 자리
    y = i % 10       # 일의 자리

    cnt = 0
    if x != 0 and x % 3 == 0:
        cnt = cnt + 1
    if y != 0 and y % 3 == 0:
        cnt = cnt + 1

    if cnt == 2:
        print("짝짝")
    elif cnt == 1:
        print("짝")
    else:
        print(i)
    i = i + 1
# ex51_문제.py

# 369게임[2단계]
# 1. 1~50까지 반복을 한다.
# 2. 그 안에서 해당 숫자의 369게임의 결과를 출력한다.
# 예) 1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 ...


count = 1

# 나머지를 3으로 나눴을때 0 이 나오면 짝
# 몫을 3으로 나눴을때도 0이 나오면 짝
while count<50:


  share = count // 10 #몫
  remainder = count % 10 #나머지

  if(share !=0 and share % 3 ==0 and remainder !=0 and remainder % 3 ==0) :
    print("짝짝")
    count+=1
  elif(share !=0 and share % 3 ==0):
    print("짝")
    count+=1
  elif(remainder !=0 and remainder % 3 ==0):
    print("짝")
    count+=1
  else :
    print(count)
    count+=1

39. 소수찾기(1단계)[문제]

정답

# ex52_정답.py

# 소수찾기[1단계]
# 1. 소수란, 1과 자기자신으로만 나눠지는 수
# 2. 예) 2, 3, 5, 7, 11, 13, ..

# 정수 한 개를 입력받아, 해당 숫자가 소수인지 아닌지 판별한다.

num = int(input("정수 입력 : "))

cnt = 0

i = 1
while i <= num:
    if num % i == 0:
        cnt = cnt + 1

    i = i + 1

if cnt == 2:
    print("소수이다.")
else:
    print("소수가 아니다.")

40. 최대값 구하기(2단계)[문제]

# ex53_문제.py

# 최대값 구하기[2단계]
# 1. 3회 반복을 하면서 정수를 입력받는다.
# 2. 입력받은 3개의 숫자 중 가장 큰 값을 출력한다.

정답

# ex53_정답.py

# 최대값 구하기[2단계]
# 1. 3회 반복을 하면서 정수를 입력받는다.
# 2. 입력받은 3개의 숫자 중 가장 큰 값을 출력한다.

max_num = 0

i = 1
while i <= 3:

    num = int(input("정수 입력 : "))

    if max_num < num:
        max_num = num

    i = i + 1

print("최대값 =", max_num)

41. 랜덤학생[문제]

# ex54_문제.py

# 랜덤학생
# 1. 10회 반복을 한다.
# 2. 1~100 사이의 랜덤 숫자를 저장한다.(학생의 성적)
# 3. 성적이 60점 이상이면 합격생이다.
# ---------------------------------------
# . 전교생(10명)의 총점과 평균을 출력한다.
# . 합격자 수를 출력한다.
# . 1등 학생의 번호와 성적을 출력한다.

정답

# ex54_정답.py

# 랜덤학생
# 1. 10회 반복을 한다.
# 2. 1~100 사이의 랜덤 숫자를 저장한다.(학생의 성적)
# 3. 성적이 60점 이상이면 합격생이다.
# ---------------------------------------
# . 전교생(10명)의 총점과 평균을 출력한다.
# . 합격자 수를 출력한다.
# . 1등 학생의 번호와 성적을 출력한다.

import random

count = 0
total = 0
max_score = 0
max_idx = 0

i = 1
while i <= 10:
    score = random.randint(1, 100)
    print(score, end=" ")
    if score >= 60:
        count = count + 1

    if max_score < score:
        max_score = score
        max_idx = i

    total = total + score

    i = i + 1
print()

print("총점 =", total)
avg = total / 10
print("평균 =", avg)
print("1등 점수 =", max_score)
print("1등 번호 =", max_idx)

42. 카카오 택시[문제]

# ex56_문제.py

# 카카오 택시
# 1. 손님을 태워 목적지까지 이동하는 게임이다.
# 2. -10~10 사이의 랜덤 숫자 2개를 저장해 목적지로 설정한다.
# 3. 메뉴는 아래와 같다.
# 		1) 속도설정 : 1~3까지만 가능
# 		2) 방향설정 : 동(1)서(2)남(3)북(4)
# 		3) 이동하기 : 설정된 방향으로 설정된 속도만큼 이동
# 4. 거리 2칸 당 50원씩 추가되어 요금도 출력한다.
# 예) 1(50) 2(50) 3(100) 4(100) ...

# 목적지(destination)
des_x = 0
dex_y = 0

# 현재 위치
x = 0
y = 0

# 방향(direction)
direc = 0

# 속도
speed = 0

# 요금
fee = 0

run = True
while run:
    print("=== 카카오 택시 ===")
    print("목적지 :", des_x, des_y)
    print("현위치 :", x, y)
    print("방  향 :", direc)
    print("속  도 :", speed)

    print("1.방향설정")
    print("2.속도설정")
    print("3.이동하기")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        pass
    elif choice == 2:
        pass
    elif choice == 3:
        pass

정답

# ex56_정답.py

# 카카오 택시
# 1. 손님을 태워 목적지까지 이동하는 게임이다.
# 2. -10~10 사이의 랜덤 숫자 2개를 저장해 목적지로 설정한다.
# 3. 메뉴는 아래와 같다.
# 		1) 속도설정 : 1~3까지만 가능
# 		2) 방향설정 : 동(1)서(2)남(3)북(4)
# 		3) 이동하기 : 설정된 방향으로 설정된 속도만큼 이동
# 4. 거리 2칸 당 50원씩 추가되어 요금도 출력한다.
# 예) 1(50) 2(50) 3(100) 4(100) ...

import random

# 목적지(destination)
des_x = random.randint(-10, 10)
des_y = random.randint(-10, 10)

# 현재 위치
x = 0
y = 0

# 방향(direction)
direc = 0

# 속도
speed = 0

# 요금
fee = 0

# 이동 칸 수
count = 0

run = True
while run:
    print("=== 카카오 택시 ===")
    print("목적지 :", des_x, des_y)
    print("현위치 :", x, y)
    print("방  향 :", direc)
    print("속  도 :", speed)

    print("1.방향설정")
    print("2.속도설정")
    print("3.이동하기")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        direc = int(input("동(1)서(2)남(3)북(4) 입력 : "))
    elif choice == 2:
        speed = int(input("속도 입력(1~3) : "))
    elif choice == 3:
        if direc == 1:
            x = x + speed
        elif direc == 2:
            x = x - speed
        elif direc == 3:
            y = y + speed
        elif direc == 4:
            y = y - speed

        count = count + speed

    if des_x == x and des_y == y:
        print("목적지에 도착하였습니다.")
        run = False

fee = count // 2 * 50
if count % 2 != 0:
    fee = fee + 50
print("요금 =", fee)
# ex56_문제.py

# 카카오 택시
# 1. 손님을 태워 목적지까지 이동하는 게임이다.
# 2. -10~10 사이의 랜덤 숫자 2개를 저장해 목적지로 설정한다.
# 3. 메뉴는 아래와 같다.
# 		1) 속도설정 : 1~3까지만 가능
# 		2) 방향설정 : 동(1)서(2)남(3)북(4)
# 		3) 이동하기 : 설정된 방향으로 설정된 속도만큼 이동
# 4. 거리 2칸 당 50원씩 추가되어 요금도 출력한다.
# 예) 1(50) 2(50) 3(100) 4(100) ...

# 목적지(destination)

import random

des_x = random.randint(-10,10)
des_y = random.randint(-10,10)

# 현재 위치
x = 0
y = 0

# 방향(direction)
direc = 0

# 속도
speed = 0

# 요금
fee = 0

total_range =0

run = True
while run:
    print("=== 카카오 택시 ===")
    print("목적지 :", des_x,des_y)
    print("현위치 :", x, y)
    print("방  향 :", direc)
    print("속  도 :", speed)

    print("1.방향설정")
    print("2.속도설정")
    print("3.이동하기")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:

      direc = int(input("2) 방향설정 : 동(1)서(2)남(3)북(4)"))

    elif choice == 2:
      speed = int(input("1) 속도설정 : 1~3까지만 가능"))

    elif choice == 3:

      if direc == 1 :
        x += speed
      elif direc == 2 :
        x-= speed
      elif direc == 3 :
        y -= speed
      elif direc == 4 :
        y += speed
      else :
        print("방향설정이 잘못되었습니다.")

      total_range += speed

    if  des_x == x and des_y == y:
      print("목적지에 도착하셨습니다.")
      run = False

share = total_range // 2
remainder = total_range % 2
fee = (share * 50) + (remainder * 50)
print("총 비용은", fee)

42. 9의 배수중 일의 자리가 6인 첫번째 배수 출력

# 문제1)  9의 배수중  일의 자리가 6인 첫번째 배수 출력

정답

 : 36

i = 0
while i < 1000:
    if i % 10 == 6 and i % 9 ==0:
        print(i)
        i = 1000
    i += 1
# 문제1)  9의 배수중  일의 자리가 6인 첫번째 배수 출력

i=0
while i< 1000:

  if i%10 == 6 and i%9==0:
    print(i)
    break;

  i+=1

43. [반복문 문제] : 첫번째 배수만 출력된다.

# 문제1)  9의 배수중  일의 자리가 6인 첫번째 배수 출력

# 문제2)  9의 배수중 십의 자리가 6인 첫번째 배수 출력

# 문제3) 8로 나누면 5가 남는수 중 150보다 작고 150 에 가장 가까운수를 구하시요

# 문제4) 50에서 100까지 자연수중에서 9의 배수는 모두 몇개입니까?

# 문제5) 28의 배수 중에서 가장 큰 세자리 수를 구하시요.

# 문제6) 8의 배수를 작은수부터 5개 출력

정답

# 문제1)  9의 배수중  일의 자리가 6인 첫번째 배수 출력

i = 0

while i < 1000 :

    if i%9 ==0 :

        if i%10 == 6:

            print(i)
    i+=1
i = 0
while i < 1000:
    if i % 10 == 6 and i % 9 ==0:
        print(i)
        i = 1000
    i += 1
# 문제2)  9의 배수중 십의 자리가 6인 첫번째 배수 출력

i = 0
while i < 1000:
    if i // 10 == 6 and i % 9 == 0:
        print(i)
        i = 1000
    i += 1

# 문제3) 8로 나누면 5가 남는수 중 150보다 작고 150 에 가장 가까운수를 구하시요

# 답 149
i = 0
a = 0
while i < 1000:
    if i % 8 == 5 and i <= 150:
        a = i
    i += 1
print(a)

# 문제4) 50에서 100까지 자연수중에서 9의 배수는 모두 몇개입니까?
# 답 6 (54,63,72,81,90,99)

a = 50
c =0
while a<= 100:
    if a % 9 == 0:
        print(a)
        c += 1

    a += 1
print(c)

# 문제5) 28의 배수 중에서 가장 큰 세자리 수를 구하시요.

i = 0
max_num =0
while i < 1000:

    if i % 28 == 0 :

        max_num = i

    i+=1

print(max_num)


# 문제6) 8의 배수를 작은수부터 5개 출력

i = 0
cnt = 0

while i < 1000:

    if i!=0 and i % 8 == 0 :

        cnt +=1

        if cnt < 6:

            print(i)

    i+=1

44. [반복문 문제] : 모든 배수 출력

# 문제1)  9의 배수중  일의 자리가 6인 배수 출력

# 문제2)  9의 배수중  십의 자리가 6인 배수 출력

정답

i = 0

while i < 1000 :


    if i % 9 == 0 and i%10 == 6 :
        print(i , end=" ")
    i+=1
print()
i = 0

while i < 1000 :

    if i % 9 == 0 and (i//10)%10 == 6 :


        print(i , end=" ")

    i+=1

45. 리스트 기본[문제]

# ex59_문제.py

# 리스트 기본문제

nums = [10, 20, 30, 40, 50]
print(nums[0])
print(nums[1])
print(nums[2])
# print(nums[5])  [5]는 없는방번호라 에러가난다. 0부터 시작하기때문에



# 예) 전체 값 출력
i = 0
while i<5:
    print(nums[i], end=" ")
    # end 는 결과물의 마지막에 어떠한 값을 넣을지 정해준다.
    # 따라서 num[i] 마다 띄어쓰기가 나오는 결과물이 출력된다.
    i = i + 1

# 문제1) 4의 배수만 출력
# 정답1) 20 40

# 문제2) 4의 배수의 합 출력
# 정답2) 60

# 문제3) 4의 배수의 개수 출력
# 정답3) 2

# 문제4) 짝수의 개수 출력
# 정답4) 5

정답

# ex59_정답.py

# 리스트 기본문제

nums = [10, 20, 30, 40, 50]

# 예) 전체 값 출력
i = 0
while i<5:
    print(nums[i], end=" ")
    i = i + 1
print()

# 문제1) 4의 배수만 출력
# 정답1) 20 40
i = 0
while i < 5:
    if nums[i] % 4 == 0:
        print(nums[i], end=" ")
    i = i + 1
print()

# 문제2) 4의 배수의 합 출력
# 정답2) 60
tot = 0
i = 0
while i<5:
    if nums[i] % 4 == 0:
       tot = tot + nums[i]
    i = i + 1
print("tot =", tot)

# 문제3) 4의 배수의 개수 출력
# 정답3) 2
cnt = 0
i = 0
while i<5:
    if nums[i] % 4 == 0:
        cnt = cnt + 1
    i = i + 1
print("cnt =", cnt)

# 문제4) 짝수의 개수 출력
# 정답4) 5
cnt = 0
i = 0
while i<5:
    if nums[i] % 2 == 0:
        cnt = cnt + 1
    i = i + 1
print("cnt =", cnt)

46. 학생성적관리 프로그램(1단계)[문제]

# ex60_문제.py

# 학생성적관리 프로그램[1단계] : 학생점수

scores = [87, 11, 92, 14, 47]

# 문제1) 전교생의 총점과 평균 출력
# 예  1) 총점(251) 평균(50.2)

# 문제2) 성적이 60점 이상이면 합격. 합격생 수 출력
# 예  2) 2명

정답

# ex60_정답.py

# 학생성적관리 프로그램[1단계] : 학생점수

scores = [87, 11, 92, 14, 47]

# 문제1) 전교생의 총점과 평균 출력
# 예  1) 총점(251) 평균(50.2)
tot = 0
avg = 0

i = 0
while i < 5:
    tot = tot + scores[i]
    i = i + 1
avg = tot / 5
print("총점 =", tot)
print("평균 =", avg)

# 문제2) 성적이 60점 이상이면 합격. 합격생 수 출력
# 예  2) 2명
cnt = 0
i = 0
while i < 5:
    if scores[i] >= 60:
       cnt = cnt + 1
    i = i + 1
print("합격생 수 =", cnt)

47. 학생성적관리 프로그램(2단계)[문제]

# ex61_문제.py

# 학생성적관리 프로그램[2단계] : 학생검색

scores = [87, 11, 92, 14, 47]

# 문제1) 인덱스를 입력받아 성적 출력
# 정답1) 인덱스 입력 : 1	성적 : 11점

# 문제2) 성적을 입력받아 인덱스 출력
# 정답2) 성적 입력 : 11		인덱스 : 1

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87, 11, 92, 14, 47]

# 문제3) 학번을 입력받아 성적 출력
# 정답3) 학번 입력 : 1003	성적 : 45점

정답

# ex61_정답.py

# 학생성적관리 프로그램[2단계] : 학생검색

scores = [87, 11, 92, 14, 47]

# 문제1) 인덱스를 입력받아 성적 출력
# 정답1) 인덱스 입력 : 1	성적 : 11점
index = int(input("인덱스 입력 : "))
print("성적 =", scores[index])

# 문제2) 성적을 입력받아 인덱스 출력
# 정답2) 성적 입력 : 11		인덱스 : 1
score = int(input("성적 입력 : "))
index = -1
i = 0
while i < 5:
    if scores[i] == score:
        index = i
    i = i + 1
print("인덱스 =", index)

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87, 11, 92, 14, 47]

# 문제3) 학번을 입력받아 성적 출력
# 정답3) 학번 입력 : 1003	성적 : 45점
number = int(input("학번 입력 : "))

i = 0
while i < 5:
    if hakbuns[i] == number:
        print(scores[i])
    i = i + 1

48. 학생성적관리 프로그램(3단계)[문제]

# ex62_문제.py

# 학생성적관리 프로그램[3단계] : 예외처리

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87, 11, 92, 14, 47]

# 문제) 학번을 입력받아 성적 출력
#       단, 없는학번 입력 시 예외처리
# 예)
# 학번 입력 : 1002		성적 : 11점
# 학번 입력 : 1000		해당학번은 존재하지 않습니다.

정답

# ex62_정답.py

# 학생성적관리 프로그램[3단계] : 예외처리

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87, 11, 92, 14, 47]

# 문제) 학번을 입력받아 성적 출력
#       단, 없는학번 입력 시 예외처리
# 예)
# 학번 입력 : 1002		성적 : 11점
# 학번 입력 : 1000		해당학번은 존재하지 않습니다.

number = int(input("학번 입력 : "))

check = -1
i = 0
while i < 5:
    if hakbuns[i] == number:
        check = i
    i = i + 1

if check == -1:
    print("해당학번은 존재하지 않습니다.")
else:
    print("성적 =", scores[check])

49. 학생성적관리 프로그램(4단계)[문제]

# ex63_문제.py

# 학생성적관리 프로그램[4단계] : 1등학생

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87, 11, 92, 14, 47]

# 문제) 1등학생의 학번과 성적 출력
# 정답) 1003번(92점)

정답

# ex63_정답.py

# 학생성적관리 프로그램[4단계] : 1등학생

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87, 11, 92, 14, 47]

# 문제) 1등학생의 학번과 성적 출력
# 정답) 1003번(92점)

max_idx = 0
max_score = 0
i = 0
while i < 5:
    if max_score < scores[i]:
        max_score = scores[i]
        max_idx = i
    i = i + 1

print("1등 성적 =", max_score)
print("1등 학번 =", hakbuns[max_idx])

50. OMR 카드[문제]

# ex64_문제.py

# OMR카드
# 1. 리스트 answer는 시험문제의 정답지이다.
# 2. answer와 hgd 값을 비교해 정오표를 출력한다.
# 3. 한 문제당 20점이다.
# 예)
# answer = [1, 3, 4, 2, 5]
# hgd    = [1, 1, 4, 4, 3]
# 정오표     = [O, X, O, X, X]
# 성적        = 40점

answer = [1, 3, 4, 2, 5]
hgd = [1, 1, 4, 4, 3]

정답

# ex64_정답.py

# OMR카드
# 1. 리스트 answer는 시험문제의 정답지이다.
# 2. answer와 hgd 값을 비교해 정오표를 출력한다.
# 3. 한 문제당 20점이다.
# 예)
# answer = [1, 3, 4, 2, 5]
# hgd    = [1, 1, 4, 4, 3]
# 정오표     = [O, X, O, X, X]
# 성적        = 40점

answer = [1, 3, 4, 2, 5]
hgd = [1, 1, 4, 4, 3]

count = 0

i = 0
while i < 5:
    if answer[i] == hgd[i]:
        count = count + 1
        print("O", end=" ")
    else:
        print("X", end=" ")
    i += 1
print()

score = count * 20
print("성적 =", score)

51. 영화관 좌석예매[문제]

# ex65_문제.py

# 영화관 좌석예매
# 1. 사용자로부터 좌석번호(index)를 입력받아 예매하는 시스템이다.
# 2. 예매가 완료되면 해당 좌석 값을 1로 변경한다.
# 3. 이미 예매가 완료된 좌석은 재구매할 수 없다.
# 4. 한 좌석당 예매 가격은 12000원이다.
# 5. 프로그램 종료 후, 해당 영화관의 총 매출액을 출력한다.
# 예)
# seat = 0 0 0 0 0 0 0
#
# 좌석선택 : 1
# seat = 0 1 0 0 0 0 0
#
# 좌석선택 : 3
# seat = 0 1 0 1 0 0 0
#
# 좌석선택 : 3
# seat = 0 1 0 1 0 0 0
# 이미 예매가 완료된 자리입니다.
# ----------------------
# 매출액 : 24000원

seat = [0, 0, 0, 0, 0, 0, 0]

run = True
while run:
    print("== 메가 영화관==")
    print("1.좌석예매")
    print("2.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        pass
    elif choice == 2:
        run = False

정답

# ex65_정답.py

# 영화관 좌석예매
# 1. 사용자로부터 좌석번호(index)를 입력받아 예매하는 시스템이다.
# 2. 예매가 완료되면 해당 좌석 값을 1로 변경한다.
# 3. 이미 예매가 완료된 좌석은 재구매할 수 없다.
# 4. 한 좌석당 예매 가격은 12000원이다.
# 5. 프로그램 종료 후, 해당 영화관의 총 매출액을 출력한다.
# 예)
# seat = 0 0 0 0 0 0 0
#
# 좌석선택 : 1
# seat = 0 1 0 0 0 0 0
#
# 좌석선택 : 3
# seat = 0 1 0 1 0 0 0
#
# 좌석선택 : 3
# seat = 0 1 0 1 0 0 0
# 이미 예매가 완료된 자리입니다.
# ----------------------
# 매출액 : 24000원

seat = [0, 0, 0, 0, 0, 0, 0]

count = 0

run = True
while run:

    i = 0
    while i < 7:
        if seat[i] == 0:
            print("[ ]", end=" ")
        else:
            print("[O]", end=" ")
        i = i + 1
    print()

    print("== 메가 영화관==")
    print("1.좌석예매")
    print("2.종료")

    choice = int(input("메뉴 선택 : "))
    if choice == 1:
        index = int(input("좌석 번호를 선택하세요(0~6) : "))
        if seat[index] == 0:
            seat[index] = 1
            count = count + 1
    elif choice == 2:
        run = False
total = count * 12000

print("매출액 =", total)

52. [03] 즉석복권 | 중복숫자금지(1)

# ex66_문제.py

# 즉석복권
# 1. 숫자 7이 연속으로 3번 등장하면, 당첨복권이다.
# 2. 아래 3종류의 복권의 당첨여부를 출력한다.

lotto1 = [0, 0, 7, 7, 7, 0, 0, 0]
lotto2 = [7, 0, 7, 7, 0, 0, 0, 0]
lotto3 = [7, 0, 7, 7, 7, 0, 7, 0]

run = True
while run:
    print("1) 복권 결과확인")

    choice = int(input())
    if choice == 1:
        print("이곳에만들어보세요")

정답

# ex66_정답.py

# 즉석복권
# 1. 숫자 7이 연속으로 3번 등장하면, 당첨복권이다.
# 2. 아래 3종류의 복권의 당첨여부를 출력한다.

lotto1 = [0, 0, 7, 7, 7, 0, 0, 0]
lotto2 = [7, 0, 7, 7, 0, 0, 0, 0]
lotto3 = [7, 0, 7, 7, 7, 0, 7, 0]

run = True
while run:
    choice = int(input("1) 복권 결과확인"))
    if choice == 1:
        check = -1
        count = 0
        i = 0
        while i < 8:
            if lotto2[i] == 7:
                count += 1
            else:
                count = 0

            if count == 3:
                check = 1
            i = i + 1
        if check == -1:
            print("꽝!")
        else:
            print("당첨!")

53. 중복숫자 금지(1단계)[문제]

# ex67_문제.py

# 중복숫자 금지[1단계]
# 1. 0~4 사이의 숫자를 arr배열에 저장한다.
# 2. 단, 중복되는 숫자는 없어야 한다.
# 힌트) 랜덤 숫자를 check배열의 인덱스로 활용한다.
#
# 예)
# 랜덤숫자 : 1
# check = {0, 1, 0, 0, 0}
# arr   = {1, 0, 0, 0, 0}
# 랜덤숫자 : 3
# check = {0, 1, 0, 1, 0}
# arr   = {1, 3, 0, 0, 0}
# 랜덤숫자 : 2
# check = {0, 1, 1, 1, 0}
# arr   = {1, 3, 2, 0, 0}

check = [0, 0, 0, 0, 0]
arr = [0, 0, 0, 0, 0]

정답

# ex67_정답.py

# 중복숫자 금지[1단계]
# 1. 0~4 사이의 숫자를 arr배열에 저장한다.
# 2. 단, 중복되는 숫자는 없어야 한다.
# 힌트) 랜덤 숫자를 check배열의 인덱스로 활용한다.
#
# 예)
# 랜덤숫자 : 1
# check = {0, 1, 0, 0, 0}
# arr   = {1, 0, 0, 0, 0}
# 랜덤숫자 : 3
# check = {0, 1, 0, 1, 0}
# arr   = {1, 3, 0, 0, 0}
# 랜덤숫자 : 2
# check = {0, 1, 1, 1, 0}
# arr   = {1, 3, 2, 0, 0}

import random

check = [0, 0, 0, 0, 0]
arr = [0, 0, 0, 0, 0]

i = 0
while i < 5:
    r_num = random.randint(0, 4)

    if check[r_num] == 0:
        arr[i] = r_num
        check[r_num] = 1
        i = i + 1

print(check)
print(arr)

54. 값 교체하기(2단계)[문제]

# ex68_문제.py

nums = [10, 20, 30, 40, 50]

# 문제 1) 인덱스 2개를 입력받아 값 교체하기
# 예   1) 인덱스1 입력 : 1
# 	  인덱스2 입력 : 3
# 	  [10, 40, 30, 20, 50]

# 문제 2) 값 2개를 입력받아 값 교체하기
# 예   2) 값1 입력 : 40
#         값2 입력 : 20
#         [10, 20, 30, 40, 50]


hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87,   11,   45,   98,   23]

# 문제 3) 학번 2개를 입력받아 성적 교체하기
# 예   3) 학번1 입력 : 1002
#         학번2 입력 : 1003
# 	  [87, 45, 11, 98, 23]

정답

# ex68_정답.py

nums = [10, 20, 30, 40, 50]

# 문제 1) 인덱스 2개를 입력받아 값 교체하기
# 예   1) 인덱스1 입력 : 1
# 	  인덱스2 입력 : 3
# 	  [10, 40, 30, 20, 50]

idx1 = int(input("인덱스1 입력 : "))
idx2 = int(input("인덱스2 입력 : "))

temp = nums[idx1]
nums[idx1] = nums[idx2]
nums[idx2] = temp
print(nums)

# 문제 2) 값 2개를 입력받아 값 교체하기
# 예   2) 값1 입력 : 40
#         값2 입력 : 20
#         [10, 20, 30, 40, 50]

v1 = int(input("값1 입력 : "))
v2 = int(input("값2 입력 : "))

idx1 = 0
idx2 = 0

i = 0
while i < 5:
    if nums[i] == v1:
        idx1 = i
    if nums[i] == v2:
        idx2 = i
    i = i + 1

temp = nums[idx1]
nums[idx1] = nums[idx2]
nums[idx2] = temp
print(nums)

hakbuns = [1001, 1002, 1003, 1004, 1005]
scores = [87,   11,   45,   98,   23]

# 문제 3) 학번 2개를 입력받아 성적 교체하기
# 예   3) 학번1 입력 : 1002
#         학번2 입력 : 1003
# 	  [87, 45, 11, 98, 23]

num1 = int(input("학번1 입력 : "))
num2 = int(input("학번2 입력 : "))

idx1 = 0
idx2 = 0

i = 0
while i < 5:
    if hakbuns[i] == num1:
        idx1 = i
    if hakbuns[i] == num2:
        idx2 = i
    i = i + 1

temp = scores[idx1]
scores[idx1] = scores[idx2]
scores[idx2] = temp
print(scores)

55. 숫자이동(1단계)[정답]

# ex69_정답.py

# 숫자이동[1단계]
# 1. 숫자2는 캐릭터이다.
# 2. 숫자1을 입력하면, 캐릭터가 왼쪽으로
#    숫자2를 입력하면, 캐릭터가 오른쪽으로 이동한다.
# 3. 단, 좌우 끝에 도달했을 때, 예외처리를 해야한다.

game = [0, 0, 2, 0, 0, 0, 0]

player = 0
i = 0
while i < 7:
    if game[i] == 2:
        player = i
    i = i + 1

정답


56. 기억력 게임[문제]

# ex70_문제.py

# 기억력 게임
# 1. 같은 숫자의 위치를 2개 입력해 정답을 맞추는 게임이다.
# 2. 정답을 맞추면 back에 해당 숫자를 저장해,
#    back에 모든 수가 채워지면 게임은 종료된다.
# 예)
# front = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
# back  = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 입력1 : 0
# 입력2 : 1
#
# front = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
# back  = [1, 1, 0, 0, 0, 0, 0, 0, 0, 0]

import random

front = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
back  = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


# 셔플(shuffle)
i = 0
while i < 100:
    r_num = random.randint(0, 9)

    temp = front[0]
    front[0] = front[r_num]
    front[r_num] = temp

    i = i + 1

i = 0
while i < 10:
    print(front[i], end=" ")
    i = i + 1

정답

# ex70_정답.py

# 기억력 게임
# 1. 같은 숫자의 위치를 2개 입력해 정답을 맞추는 게임이다.
# 2. 정답을 맞추면 back에 해당 숫자를 저장해,
#    back에 모든 수가 채워지면 게임은 종료된다.
# 예)
# front = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
# back  = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 입력1 : 0
# 입력2 : 1
#
# front = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
# back  = [1, 1, 0, 0, 0, 0, 0, 0, 0, 0]

import random

front = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
back  = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


# 셔플(shuffle)
i = 0
while i < 100:
    r_num = random.randint(0, 9)

    temp = front[0]
    front[0] = front[r_num]
    front[r_num] = temp

    i = i + 1

i = 0
while i < 5:
    # 인덱스 출력
    j = 0
    while j < 10:
        print(j, end="  ")
        j = j + 1
    print()

    # front 출력
    print(front)
    # back 출력
    print(back)

    index1 = int(input("인덱스1 입력 : "))
    index2 = int(input("인덱스2 입력 : "))

    if front[index1] == front[index2]:
        back[index1] = front[index1]
        back[index2] = front[index2]
        i = i + 1

57. 1 to 50(1단계)[문제]

# ex71_문제.py

# 1 to 50[1단계] : 1 to 4
# 1. arr배열에 1~4 사이의 숫자를 중복없이 저장한다.
# 2. 사용자는 1부터 순서대로 해당 위치 값을 입력한다.
# 3. 정답을 맞추면 해당 값은 9로 변경되어 모든 값이 9가 되면 게임은 종료된다.
# 예)
# 4 2 3 1
# 입력 : 3
# 4 2 3 9
# 입력 : 1
# 4 9 3 9

정답

# ex71_정답.py

# 1 to 50[1단계] : 1 to 4
# 1. arr배열에 1~4 사이의 숫자를 중복없이 저장한다.
# 2. 사용자는 1부터 순서대로 해당 위치 값을 입력한다.
# 3. 정답을 맞추면 해당 값은 9로 변경되어 모든 값이 9가 되면 게임은 종료된다.
# 예)
# 4 2 3 1
# 입력 : 3
# 4 2 3 9
# 입력 : 1
# 4 9 3 9

import random

arr = [0, 0, 0, 0]
check = [0, 0, 0, 0]

# arr 배열에 1~4 중복없이 저장하기
i = 0
while i < 4:
    r_num = random.randint(0, 3)

    if check[r_num] == 0:
        check[r_num] = 1
        arr[i] = r_num + 1
        i = i + 1
# print(arr)

# 게임 시작
game_num = 1

i = 0
while i < 4:
    print(arr)

    index = int(input("인덱스 입력 : "))
    if arr[index] == game_num:
        arr[index] = 9
        game_num += 1
        i += 1


import random

arr = [0, 0, 0, 0]
check = [0, 0, 0, 0]

# 1~4 사이의 숫자를 중복없이 저장한다.
i = 0
while i<4 :

  random_num = random.randint(1,4)

  if check[random_num-1] == 0 :
    check[random_num-1] = 1
    arr[i] = random_num
    i= i+1


print(arr)


j = 1
while j<5:
  answer = int(input("입력 : "))

  if arr[answer] == j :
    arr[answer] = 9
    j = j+1
  else :
    print("틀렷습니다.")

print(arr)

58. 틱택토[문제]

# ex72_문제.py

# 틱택토
# === 틱택토 ===
# [X][X][O]
# [ ][O][ ]
# [ ][ ][ ]
# [p1]인덱스 입력 : 6
# === 틱택토 ===
# [X][X][O]
# [ ][O][ ]
# [O][ ][ ]
# [p1]승리

game = [0, 0, 0, 0, 0, 0, 0, 0, 0]

정답

# ex72_정답.py

# 틱택토
# === 틱택토 ===
# [X][X][O]
# [ ][O][ ]
# [ ][ ][ ]
# [p1]인덱스 입력 : 6
# === 틱택토 ===
# [X][X][O]
# [ ][O][ ]
# [O][ ][ ]
# [p1]승리

game = [0, 0, 0, 0, 0, 0, 0, 0, 0]

p1 = 0
p2 = 0
turn = True
win1 = False
win2 = False

run = True
while run:

    # 게임화면 출력
    i = 0
    while i < 9:
        if game[i] == 0:
            print("[ ]", end=" ")
        elif game[i] == 1:
            print("[O]", end=" ")
        elif game[i] == 2:
            print("[X]", end=" ")

        if i % 3 == 2:
            print()

        i = i + 1

    # p1 차례
    if turn == True:
        p1 = int(input("[p1차례] 입력 : "))

        if game[p1] == 0:
            game[p1] = 1
            turn = not turn
    # p2 차례
    elif turn == False:
        p2 = int(input("[p2차례] 입력 : "))

        if game[p2] == 0:
            game[p2] = 2
            turn = not turn

    # 가로 검사
    i = 0
    while i < 9:
        if game[i] == 1 and game[i+1] == 1 and game[i+2] == 1:
            win1 = True
        if game[i] == 2 and game[i+1] == 2 and game[i+2] == 2:
            win2 = True
        i = i + 3

    # 세로 검사
    i = 0
    while i < 3:
        if game[i] == 1 and game[i+3] == 1 and game[i+6] == 1:
            win1 = True
        if game[i] == 2 and game[i+3] == 2 and game[i+6] == 2:
            win2 = True
        i = i + 1

    # 대각선 검사(1)
    if game[0] == 1 and game[4] == 1 and game[8] == 1:
        win1 = True
    if game[0] == 2 and game[4] == 2 and game[8] == 2:
        win2 = True

    # 대각선 검사(2)
    if game[2] == 1 and game[4] == 1 and game[6] == 1:
        win1 = True
    if game[2] == 2 and game[4] == 2 and game[6] == 2:
        win2 = True

    # 게임 종료
    if win1:
        run = False
        print("p1 승리!")
    elif win2:
        run = False
        print("p2 승리!")

59. [06] 미니 윷놀이

# ex73_문제.py

# 미니 윷놀이
# 1. 플레이어는 p1과 p2 2명이다.
# 2. 번갈아가며 1~3 사이의 숫자를 입력해 이동한다.
# 3. 이동하다가 다음 플레이어와 같은 위치에 놓이게 되면,
#    상대 플레이어는 잡히게 되어 원점으로 되돌아간다.
# 4. 먼저 3바퀴를 돌면 이긴다.

#   [p1]1~3 입력 : 2
#   1 2 3 4 5 6 7 8
#   0 1 0 0 0 0 0 0
#   0 0 0 2 0 0 0 0
#
#   [p1]이 p2를 잡았다!
#   1 2 3 4 5 6 7 8
#   0 0 0 1 0 0 0 0
#   2 0 0 0 0 0 0 0


game = [0, 1, 2, 3, 4, 5, 6, 7, 8]
p1 = [0, 0, 0, 0, 0, 0, 0, 0, 0]
p2 = [0, 0, 0, 0, 0, 0, 0, 0, 0]

turn = 0

idx1 = 0
idx2 = 0

p1[idx1] = 1
p2[idx2] = 2

정답

# ex73_정답.py

# 미니 윷놀이
# 1. 플레이어는 p1과 p2 2명이다.
# 2. 번갈아가며 1~3 사이의 숫자를 입력해 이동한다.
# 3. 이동하다가 다음 플레이어와 같은 위치에 놓이게 되면,
#    상대 플레이어는 잡히게 되어 원점으로 되돌아간다.
# 4. 먼저 3바퀴를 돌면 이긴다.

#   [p1]1~3 입력 : 2
#   1 2 3 4 5 6 7 8
#   0 1 0 0 0 0 0 0
#   0 0 0 2 0 0 0 0
#
#   [p1]이 p2를 잡았다!
#   1 2 3 4 5 6 7 8
#   0 0 0 1 0 0 0 0
#   2 0 0 0 0 0 0 0


game = [0, 1, 2, 3, 4, 5, 6, 7, 8]
p1 = [0, 0, 0, 0, 0, 0, 0, 0, 0]
p2 = [0, 0, 0, 0, 0, 0, 0, 0, 0]

turn = 0

idx1 = 0
idx2 = 0

p1[idx1] = 1
p2[idx2] = 2

win1 = 0
win2 = 0

while True:
    # 게임 종료
    if win1 == 3:
        print("[p1]승리!")
        break
    elif win2 == 3:
        print("[p2]승리!")

    # 게임화면 출력
    print(game)
    print(p1, win1)
    print(p2, win2)

    # p1 차례
    if turn % 2 == 0:
        move = int(input("[p1차례] 입력 : "))
        p1[idx1] = 0

        idx1 += move
        if idx1 >= 9:
            win1 += 1

        idx1 %= 9

        p1[idx1] = 1

        turn += 1
    # p2 차례
    elif turn % 2 == 1:
        move = int(input("[p2차례] 입력 : "))
        p2[idx2] = 0

        idx2 += move
        if idx2 >= 9:
            win2 += 1

        idx2 %= 9

        p2[idx2] = 2

        turn += 1

    # 잡혔을 때
    if idx1 == idx2:
        if turn % 2 == 0:
            print("[p2]가 [p1]을 잡았다!")

            p1[idx1] = 0
            idx1 = 0
            p1[idx1] = 1
        elif turn % 2 == 1:
            print("[p1]이 [p2]를 잡았다!")

            p2[idx2] = 0
            idx2 = 0
            p2[idx2] = 2
# ex73_문제.py

# 미니 윷놀이
# 1. 플레이어는 p1과 p2 2명이다.
# 2. 번갈아가며 1~3 사이의 숫자를 입력해 이동한다.
# 3. 이동하다가 다음 플레이어와 같은 위치에 놓이게 되면,
#    상대 플레이어는 잡히게 되어 원점으로 되돌아간다.
# 4. 먼저 3바퀴를 돌면 이긴다.

#   [p1]1~3 입력 : 2
#   1 2 3 4 5 6 7 8
#   0 1 0 0 0 0 0 0
#   0 0 0 2 0 0 0 0
#
#   [p1]이 p2를 잡았다!
#   1 2 3 4 5 6 7 8
#   0 0 0 1 0 0 0 0
#   2 0 0 0 0 0 0 0


game = [0, 1, 2, 3, 4, 5, 6, 7, 8]
p1 = [0, 0, 0, 0, 0, 0, 0, 0, 0]
p2 = [0, 0, 0, 0, 0, 0, 0, 0, 0]
count = 0
turn = 0

idx1 = 0
idx2 = 0

p1[idx1] = 1
p2[idx2] = 2

run = True

while run :

    if turn % 2 == 0 :

        p1[idx1] = 0

        idx1 += int(input("[p1]1~3 입력 :"))

        if idx1 == idx2 :

            p2[idx2] = 0
            idx2 = 0
            p2[idx2] = 2

        if idx1 > 8 :

            idx1 -= 9
            count +=1

        p1[idx1] = 1
        turn +=1

    elif turn % 2 == 1 :

        p2[idx2] = 0

        idx2 += int(input("[p2]1~3 입력 :"))

        if idx1 == idx2 :

            p1[idx1] = 0
            idx1 = 0
            p1[idx1] = 1

        if idx2 > 8 :

            idx2 -= 9
            count +=1

        p2[idx2] = 2
        turn +=1

    if count == 3 :

        if turn % 2 == 0 :
            print("p2 승리")
            run = False

        elif turn % 2 == 1:
            print("p1 승리")
            run = False

    print(game)
    print(p1)
    print(p2)
# ex73_문제.py

# 미니 윷놀이
# 1. 플레이어는 p1과 p2 2명이다.
# 2. 번갈아가며 1~3 사이의 숫자를 입력해 이동한다.
# 3. 이동하다가 다음 플레이어와 같은 위치에 놓이게 되면,
#    상대 플레이어는 잡히게 되어 원점으로 되돌아간다.
# 4. 먼저 3바퀴를 돌면 이긴다.

#   [p1]1~3 입력 : 2
#   1 2 3 4 5 6 7 8
#   0 1 0 0 0 0 0 0
#   0 0 0 2 0 0 0 0
#
#   [p1]이 p2를 잡았다!
#   1 2 3 4 5 6 7 8
#   0 0 0 1 0 0 0 0
#   2 0 0 0 0 0 0 0


game = [0, 1, 2, 3, 4, 5, 6, 7, 8]
p1 = [0, 0, 0, 0, 0, 0, 0, 0, 0]
p2 = [0, 0, 0, 0, 0, 0, 0, 0, 0]

turn = 0

idx1 = 0
idx2 = 0

p1[idx1] = 1
p2[idx2] = 2
win1 = 0
win2 = 0

run = True

while run :

    move_p1=0

    move_p2=0

    if turn % 2 == 0 :

        p1[idx1] = 0

        move_p1 = int(input("1~3 사이의 숫자를 입력해 이동한다."))

        idx1 += move_p1

        #먹는 조건
        if idx1 == idx2 :

            p2[idx2] = 0
            p2[0] = 2
            idx2 = 0

        #한바퀴를 돌았을때

        if idx1 > 8 :

            idx1 -= 9
            win1 += 1

        p1[idx1] = 1

        turn+=1

    elif turn % 2 == 1:

        p2[idx2] = 0

        move_p2 = int(input("1~3 사이의 숫자를 입력해 이동한다."))

        idx2 += move_p2

        if idx1 == idx2 :

            p1[idx1] = 0
            p1[0] = 1
            idx1 = 0

        if idx2 > 8 :

            idx2 -= 9
            win2 += 1

        p2[idx2] = 2

        turn+=1

    if win1 == 3 :
        print("p1이 이겼습니다")
        run = False

    elif win2 == 3:
        print("p2가 이겼습니다")
        run = False


    print(game)
    print(p1)
    print(p2)

주의사항 및 Tip

첫번째, 말이 이동하는 방법

두번째, 한바퀴돌때 다시 1로 되는 조건

세번째, 상대의 말을 잡아먹었을때 조건

Leave a comment