-
a=2, b=a*8 보다 a <<3이 빠른 이유
-
가위바위보
-
버블소트
-
컴퓨터는 adder 밖에 없다. 그래서 곱셈의 과정을 덧셈과 쉬프트를 사용하는데,
1번의 곱셈보다, 식을 단순화시켜 쉬프트만 시킨것이 성능이 좋다. 특히 2의 승수로 나누기나 곱할때, 쉬프트를 이용하면
속도가 엄청 빨라진다 (<< , >>) 2^allowed의 예
a*8 (곱하기 연산은 쉬프트 +덧셈을 반복해야하지만) a<<3 쉬프트만 하면되서 속도가 엄청빨라짐
2. 가위바위보
포문으로 3번돌려서 , playone을 돌려서 list꺼를 어펜드해서 , 플레이어가 2개 이상이면 플레이어 윈이라는 기본구조
링크
피드백)
get_player_choice():
# string = input("입력하세요")
# while string== "짱" or "깸" or "뽀":
# return string
# 조건문을 만들수 있는가 하는 부분
입력받아서, 가위바위보중 하나 리턴하려고 했는데,
틀린경우를 생각을 못했다, 애초에 받을때 3가지 입력이 정해진 상태가 아니면 안받으면 됬었다
get_computer_choice():
# i = random.randint(0, 2)
# dic = {'0':'가위', '1':'바위', '2': '보'}
# a = i.values()
# return a
# dic{ 1 : "바위", 2 : "가위", 3: "보"}
# computer = random.randint(1, 3)
# computer = dic[computer]
# return computer
리스트나 튜플로 난수로 변수에 넣은후에 그 값을 반환 시켜주면 되는데
리스트에 대한 이해도가 부족했는데, 키:값 매칭 시키는게 어려웠다
who_wins(player, com)
# a = player
# b = com
# if a == "가위" and b == "보":
# resul = "플레이어가 이겼습니다."
# elif a == "가위" and b == "가위":
# resul = "비겼습니다"
# elif a == "가위" and b == "바위":
# resul = "졌습니다"
# return resul
아예 생각자체를 잘못한 부분 , 플레이어랑 컴퓨터가 낸거를 비교해서 , 플레이어,컴퓨터, 아닌경우만
나누면되는건데 멍청하게 모든 경우의수를 다쓰려고 시도했다. 이기는경우, 비기는경우, 지는경우가
3가지 씩 있으므로, 비기는경우랑 이기는경우를 빼면 자동으로 지는경우가 된다 else부분이 포인트
play_one():
위에서 나온함수를 종합해서 한판했을시 어떻게 되는지 나오는부분
check_final_winner(result):
# r[]
# b[]
# if result== 'player':
# r.append('player')
# elif b.append('computer')
# if r.count() == 'player':
# return 'player'
# elif r.count() == 'computer':
# return 'computer'
# else: none
최종승자를 알아보기 위해 아예 새로운 리스트를 만들어서 추가시켜야 된다고 생각했는데
이건 파이썬의 문법을 잘 모른 부분이니까 이해된다
play()
3판 2선승 만드는부분
# result_list[]
# result_list = play_one()
# check_final_winner(result_list)
함수 자체가 list에 통으로 append된다는점이 포인트 였다
- 버블소트
def bubble_sort(li):
n=len(li)
flag=None
for i in range(n-1): #핵심은 이것
flag = False
for j in range(n-1-i): #두가지를 일반화 할수 있는가
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
flag = True
if flag == False:
break
return li
if __name__=="__main__":
li=[6, 2, 1, 4]
bubble_sort(li)
print(li)
n-1-i부분, 바깥쪽 포문이 li의 수-1만큼 도는데(여기선 4개라고 확정 지어서 쉽게 생각해서)
바깥쪽포문이 3번, 안쪽포문이 3,2,1 이렇게 도는데 이방법을 어떻게 해야될지 몰랐고,
i가 0,1,2 올라가는것을 활용해 -i하는 부분이 포인트
'공부 > TIL-D' 카테고리의 다른 글
퀵소트 (0) | 2019.04.21 |
---|---|
함수 (0) | 2019.04.20 |
오늘 배운것 자세히 (0) | 2019.04.18 |
오늘 배운것 자세히 (0) | 2019.04.17 |
<picture>태그 <source>태그 background-size속성 (0) | 2019.04.16 |