Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL] AI 웹 개발 7기 사전 캠프 2-3 본문

WHAT I LEARN/TIL

[TIL] AI 웹 개발 7기 사전 캠프 2-3

노네임드개발자 2024. 5. 29. 18:47

일일 알고리즘 코드카타 풀어보기

Q. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

 

제한사항

0 ≤ numbers의 원소 ≤ 1,000

1 ≤ numbers의 길이 ≤ 100

정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

def solution(numbers):
    sum = 0
    count = 0
    for number in numbers:
        count += 1
        sum += number
        answer = sum/count
    return answer

평균값을 구하는 함수가 있을거라 찾아서 쉽게 풀어보려 했지만 오늘은 그동안 배운 것들을 이용해서 풀어보기로 했다. 반복문을 이용하여 각 요소들의 합과 개수를 구할 수가 있었다. 아직 반복문을 사용하는게 익숙하지가 않는 것 같다.

def solution(numbers):
    answer= sum(numbers) / len(numbers)
    return answer

처음엔 이렇게 풀어보고 싶었다. 이 함수들을 기억해두자.

sum() - 합

len() - 수

 

[python 과제] Lv3. 단어 맞추기 게임

단어를 주어진 기회 안에 맞추는 게임을 만들어보세요.

 

1. 컴퓨터가 랜덤으로 영어단어를 선택합니다.

  1. 영어단어의 자리수를 알려줍니다.
  2. ex ) PICTURE = 7자리 ⇒ _ _ _ _ _ _ _
import random
word = random.choice(words)

지난 닉네임 생성기에서 배운 방법으로 랜덤으로 단어 선택할 수 있게 해봤다.


여기까지 하고 진짜 1도 모르겠어서 구글링을 해본 결과 비슷한 문제에 대한 예제가 있어서 따라해 보기로 했다.

4주차에 한번 더 할 수 있는 기회가 있으므로 이번 예제로 코드 공부하면서 알고리즘 적 사고를 기른다 생각해보자.

https://wikidocs.net/63900

 

섹션 01 영어 단어 앞파벳 찾기 게임

.

wikidocs.net

1. 알파벳 4개 입력 받기

print('영어 단어 알파벳 찾기 게임')
print('영어 단어의 알파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

print('_')
print('_')
print('_')
print('_')

answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)

deep 이라는 한 단어만 두고 알파벳 4개를 입력할 수 있게 input으로 진행했다. 

answer=input으로 answers 리스트에 알파벳을 추가할 수 있게 만들었다.(answers.append(answer)

#

영어 단어 알파벳 찾기 게임
영어 단어의 알파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e

알파벳을 입력하세요: p

 

2. 모든 알파벳을 찾았는지 체크

print('영어 단어 알파벳 찾기 게임')
print('영어 단어의 알파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

print('_')
print('_')
print('_')
print('_')

answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)
answer = input('알파벳을 입력하세요: ')
answers.append(answer)

found_all = True
for letter in word:
    if letter not in answers:
        found_all = False
if found_all:
    print('모든 알파벳을 찾았습니다!')

반복문을 이용하여 word 리스트의 알파벳 letter를 나열하고

조건문을 통해 알파벳 letter가 answers에 있지 않으면 False가 나오게 했다.(answers는 answer=input의 나열)

#

영어 단어 알파벳 찾기 게임
영어 단어의 알파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

 

3. 사이 사이에 체크

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

print('_')
print('_')
print('_')
print('_')

answer = input('알파벳을 입력하세요: ')
answers.append(answer)

found_all = True
for letter in word:
    if letter not in answers:
        found_all = False
if found_all:
    print('모든 알파벳을 찾았습니다')

answer = input('알파벳을 입력하세요: ')
answers.append(answer)

found_all = True
for letter in word:
    if letter not in answers:
        found_all = False
if found_all:
    print('모든 알파벳을 찾았습니다')

answer = input('알파벳을 입력하세요: ')
answers.append(answer)

found_all = True
for letter in word:
    if letter not in answers:
        found_all = False
if found_all:
    print('모든 알파벳을 찾았습니다')

answer = input('알파벳을 입력하세요: ')
answers.append(answer)

found_all = True
for letter in word:
    if letter not in answers:
        found_all = False
if found_all:
    print('모든 알파벳을 찾았습니다')

이전에 했던 T/F 코드를 input 사이에 넣으면 input마다 T/F를 알 수 있을 것이다.

(2번이랑 결과가 같아서 뭐가 다른지 모르겠다.)

#

영어 단어 알파벳 찾기 게임
영어 단어의 알파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

 

4. 반복문

answer = input('알파벳을 입력하세요: ')
answers.append(answer)

이 것을 4번 반복해야하기 때문에 반복문으로 수정해보자.

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

print('_')
print('_')
print('_')
print('_')

for _ in range(4):
    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')

앞서 4번 반복을 했으니 range(4) 함수를 사용해서 나열할 수 있다.

for _ in range()

파이썬에서는 반복을 수행하되, 변수 값이 필요 없을 때 언더바(_)를 사용할 수 있다.

예를 들어, print 문을 반복시킬 때, 아래와 같이 변수 부분에 언더바를 적어주면, 변수 없이 반복문이 실행된다.

for _ in range(5):
    print("Hello World")

#

Hello World

Hello World

Hello World

Hello World

Hello World

 

5. 알파벳 9개 입력받기

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

print('_')
print('_')
print('_')
print('_')

for _ in range(9):
    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')
        break

range(9)로 수정하면서 input 값을 9번 넣을 수 있게 수정했다.

9회 내로 모든 알파벳을 찾았을 경우 멈출 수 있게 break도 추가했다.

#

영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: a
알파벳을 입력하세요: b
알파벳을 입력하세요: c
알파벳을 입력하세요: d
알파벳을 입력하세요: e
알파벳을 입력하세요: e
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

 

6. 영어 단어 보여주기

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

print('_')
print('_')
print('_')
print('_')

for _ in range(9):
    for letter in word:
        if letter in answers:
            print(letter)
        else:
            print('_')

    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')
        break

조건문을 활용하여 word에 있는 알파벳과 input(=answer)에 입력한 알파벳이면 알파벳을 출력하고 아니면 _을 출력했다.

#

영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_
_
_
_
_
_
_
_
알파벳을 입력하세요: a
_
_
_
_
알파벳을 입력하세요: b
_
_
_
_
알파벳을 입력하세요: c
_
_
_
_
알파벳을 입력하세요: d
d
_
_
_
알파벳을 입력하세요: e
d
e
e
_
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

(중간에 _는 4개였다가 왜 8개로 된거지?)

 

7. 중복 제거

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

for _ in range(9):
    for letter in word:
        if letter in answers:
            print(letter)
        else:
            print('_')

    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')
        break

위의 print('_') 4개는 임의로 지정해 놓은 것 같다.

이 전에 영어 단어 보여주기에 입력한 알파벳이 아닌 경우에 _가 출력되게 했다.

(아무것도 입력 안했을 시 알파벳 하나하나는 _이 될 것이다.)

#

영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_
_
_
_
알파벳을 입력하세요: a
_
_
_
_
알파벳을 입력하세요: b
_
_
_
_
알파벳을 입력하세요: c
_
_
_
_
알파벳을 입력하세요: e
_
e
e
_
알파벳을 입력하세요: d
d
e
e
_
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

 

8. 영어 단어 옆으로 보여주기

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

for _ in range(9):
    for letter in word:
        if letter in answers:
            print(letter, end=' ')
        else:
            print('_', end=' ')

    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')
        break

위의 조건문에서 end=' ' 을 이용했다. 

end 사용하기

파이썬의 print는 기본적으로 출력하는 값 끝에 \n을 붙이기 때문에 print를 여러 번 사용하면 값이 여러 줄에 출력된다.

만약 print를 여러 번 사용하더라도 print(1, 2, 3)처럼 한 줄에 여러 개의 값을 출력하고 싶을 경우 end를 사용하면 된다.

예) print(값, end='문자 또는 문자열')

#

영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_ _ _ _ 알파벳을 입력하세요: a
_ _ _ _ 알파벳을 입력하세요: b
_ _ _ _ 알파벳을 입력하세요: c
_ _ _ _ 알파벳을 입력하세요: d
d _ _ _ 알파벳을 입력하세요: e
d e e _ 알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

 

9. 줄 바꾸기

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

word = 'deep'

answers = []

for _ in range(9):
    for letter in word:
        if letter in answers:
            print(letter, end=' ')
        else:
            print('_', end=' ')
    print()

    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')
        break

중간에 print()를 추가해주면서 _칸과 '알파벳을 입력하세요: ' 의 줄을 바꿔준다.

#

영어 단어 앞파벳 찾기 게임
영어 단어의 앞파벳을 찾는 게임 입니다.
_ _ _ _ 
알파벳을 입력하세요: a
_ _ _ _ 
알파벳을 입력하세요: b
_ _ _ _ 
알파벳을 입력하세요: c
_ _ _ _ 
알파벳을 입력하세요: d
d _ _ _ 
알파벳을 입력하세요: e
d e e _ 
알파벳을 입력하세요: p
모든 알파벳을 찾았습니다!

 

10. 랜덤 단어 문제

최종코드

import random

print('영어 단어 앞파벳 찾기 게임')
print('영어 단어의 앞파벳을 찾는 게임 입니다.')

words = [
    "airplane",
    "apple",
    "arm",
    "bakery",
    "banana",
    "bank",
    "bean",
    "belt",
    "bicycle",
    "biography",
    "blackboard",
    "boat",
    "bowl",
    "broccoli",
    "bus",
    "car",
    "carrot",
    "chair",
    "cherry",
    "cinema",
    "class",
    "classroom",
    "cloud",
    "coat",
    "cucumber",
    "desk",
    "dictionary",
    "dress",
    "ear",
    "eye",
    "fog",
    "foot",
    "fork",
    "fruits",
    "hail",
    "hand",
    "head",
    "helicopter",
    "hospital",
    "ice",
    "jacket",
    "kettle",
    "knife",
    "leg",
    "lettuce",
    "library",
    "magazine",
    "mango",
    "melon",
    "motorcycle",
    "mouth",
    "newspaper",
    "nose",
    "notebook",
    "novel",
    "onion",
    "orange",
    "peach",
    "pharmacy",
    "pineapple",
    "plate",
    "pot",
    "potato",
    "rain",
    "shirt",
    "shoe",
    "shop",
    "sink",
    "skateboard",
    "ski",
    "skirt",
    "sky",
    "snow",
    "sock",
    "spinach",
    "spoon",
    "stationary",
    "stomach",
    "strawberry",
    "student",
    "sun",
    "supermarket",
    "sweater",
    "teacher",
    "thunderstorm",
    "tomato",
    "trousers",
    "truck",
    "vegetables",
    "vehicles",
    "watermelon",
    "wind"
]
word = random.choice(words)

answers = []

for _ in range(9):
    for letter in word:
        if letter in answers:
            print(letter, end=' ')
        else:
            print('_', end=' ')
    print()

    answer = input('알파벳을 입력하세요: ')
    answers.append(answer)

    found_all = True
    for letter in word:
        if letter not in answers:
            found_all = False
    if found_all:
        print('모든 알파벳을 찾았습니다!')
        break

import random을 사용하여 random.choice(words)를 뽑아와 단어 맞추기 문제를 진행할 수 있다.

 

원래 받은 문제는 랜덤으로 영어단어를 뽑고 자리수부터 실행하는데 완전 반대되는 예제 풀이었다.

과제에서는 isalpha도 활용하도록 유도했지만 할 수가 없었다.

4주차에 다시 한번 진행할 때는 이 풀이를 바탕으로 스스로 풀어보자.