[TIL_Carrotww] 8 - 22/09/07

μœ ν˜•μ„Β·2022λ…„ 9μ›” 7일
0

TIL

λͺ©λ‘ 보기
9/138
post-thumbnail

πŸ“ Carrotww의 μ½”λ”© 기둝μž₯

🧲 μ•Œκ³ λ¦¬μ¦˜ 1

πŸ”— ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ Level1 같은 μˆ«μžλŠ” μ‹«μ–΄
심심풀이 1단계 풀이

πŸ” λ¬Έμžμ—΄μ„ λ‹€λ£¨λŠ” 문제둜 쑰금만 생각해봐도 ν’€ 수 μžˆλ‹€. λ”°λ‘œ μ„€λͺ…은 μ•ˆν•΄λ„ 될 것 κ°™λ‹€.

def solution(arr):
    result = [arr[0]]
    for i in range(1, len(arr)):
        if result[-1] == arr[i]:
            continue
        else:
            result.append(arr[i])
    
    return result

🧲 μ•Œκ³ λ¦¬μ¦˜ 2

πŸ”— ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ Level1 μ‹€νŒ¨μœ¨
1레벨 python의 기초 lambda, sort, dict λ₯Ό 잘 닀루어야 ν’€κΈ° νŽΈν•˜λ©°
쑰금 생각이 ν•„μš”ν•˜λ‹€

def solution(N, stages):
    result = {}
    total = len(stages)

    for i in range(1, N + 1):
        if total != 0:
            current_n = stages.count(i)
            result[i] = current_n / total
            total -= current_n
        else:
            result[i] = 0
    
    result = sorted(result, key=lambda x :result[x], reverse=True)
    return result

🧲 python pprint

πŸ” pprintλŠ” 처음 μ•Œμ•˜λ‹€.

from pprint import pprint

λ₯Ό ν•΄μ£Όκ²Œ 되면 μ‚¬μš© κ°€λŠ₯ν•˜λ‹€

from collections import defaultdict
import random
from pprint import pprint

result = defaultdict(list)

for i in range(10):
    for _ in range(10):
        result[i].append(random.randint(1, 55))

pprint(result)

πŸ” μœ„ μ½”λ“œμ˜ 좜λ ₯을 print둜 ν•˜κ²Œ 되면

보기 νž˜λ“€κ²Œ λ‚˜μ˜€μ§€λ§Œ
pprintλ₯Ό μ‚¬μš©ν•˜κ²Œ 되면

μœ„μ™€κ°™μ΄ μ§κ΄€μ μœΌλ‘œ 보기 μ‰½κ²Œ λ‚˜μ˜¨λ‹€.

🧲 숫자 야ꡬ κ²Œμž„ λ§Œλ“€κΈ°

πŸ” 숫자 야ꡬ κ²Œμž„ μ„€λͺ…

πŸ” μš”κ΅¬μ‘°κ±΄

  • ν”„λ‘œκ·Έλž¨μ΄ μ‹œμž‘λ˜λ©΄ μŠ·μžμ•Όκ΅¬ κ²Œμž„μ„ λͺ‡ 자리 숫자둜 ν•  건지 μž…λ ₯ λ°›μ•„ μ£Όμ„Έμš”
    • 3을 μž…λ ₯ν•  경우 ν•΄λ‹Ή μˆ«μžμ•Όκ΅¬ κ²Œμž„μ€ 3자릿수둜 진행, μ΅œλŒ€ 10자리
  • 첫 번째 μž…λ ₯을 받은 자릿수 만큼 ν›„ 파이썬으둜 쀑볡 μ—†λŠ” λžœλ€ν•œ 수λ₯Ό 생성해 μ£Όμ„Έμš”
  • μ‚¬μš©μžκ°€ 숫자λ₯Ό μž…λ ₯ ν–ˆμ„ λ•Œ μˆ«μžμ•Όκ΅¬ κ²Œμž„μ˜ κ·œμΉ™μ— 맞게 ball / out countλ₯Ό 좜λ ₯ν•΄ μ£Όμ„Έμš”
  • μ‚¬μš©μžκ°€ 정닡을 맞좘 경우 μ•„λž˜ ν•­λͺ©λ“€μ„ 좜λ ₯ν•΄ μ£Όμ„Έμš”
    • μ‚¬μš©μžκ°€ 정닡을 λ§žμΆ”κΈ°κΉŒμ§€ μž…λ ₯ ν•œ 횟수
    • μ‚¬μš©μžκ°€ κ²Œμž„μ„ μ‹œμž‘ν•΄μ„œ 정닡을 λ§žμΆ”κΈ°κΉŒμ§€ μ†Œμš”λœ μ‹œκ°„
    • 정닡을 맞좘 μ‹œμ μ˜ λ‚ μ§œ/μ‹œκ°„
  • κ²Œμž„μ„ μ§„ν–‰ν•˜λ˜ 도쀑, β€œexit”을 μž…λ ₯ν•  경우 ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•΄ μ£Όμ„Έμš”
import sys
import random
import time
from typing import List
from datetime import datetime
from datetime import timedelta

def config_num(): # configuration 3 ~ 10 number
    print('자릿수 μ •ν•˜κΈ° 3 ~ 10 사이 수λ₯Ό μž…λ ₯ν•΄ μ£Όμ„Έμš” : ')
    while 1:
        num = input()
        if not num.isdigit():
            print('숫자λ₯Ό μž…λ ₯ν•΄ μ£Όμ„Έμš”.')
            continue
        elif int(num) > 2 and int(num) < 10:
            break
        else:
            print('3 ~ 10의 수λ₯Ό μž…λ ₯ν•΄ μ£Όμ„Έμš”.')
    return num

def gen_ran_num(num: int) -> List:
    temp = [i for i in range(10)]
    answer_list = random.sample(temp, int(num))
    return answer_list

if __name__ == '__main__':
    now = datetime.now()
    game_digit = config_num()
    answer_list = gen_ran_num(game_digit)
    print(answer_list)

    cnt = 1
    exit = True
    start = time.time()
    while 1:
        print(f'μ •λ‹΅ {game_digit}자릿수λ₯Ό μž…λ ₯ν•΄ μ£Όμ„Έμš”. ex) num num num')
        while 1:
            # player_input = list(map(int, sys.stdin.readline().split()))
            temp = sys.stdin.readline().split()
            if temp[0] == 'exit':
                break
            player_input = list(map(int, temp))
            if len(player_input) == int(game_digit):
                break
            else:
                print('자릿수λ₯Ό 확인해 μ£Όμ„Έμš”.')
        if temp[0] == 'exit':
            break

        strike, ball = 0, 0
        for i in range(int(game_digit)):
            if player_input[i] == answer_list[i]:
                strike += 1
            elif player_input[i] in answer_list:
                ball += 1
        if strike == int(game_digit):
            end = time.time()
            sec = end - start
            result_list = str(timedelta(seconds=sec)).split(".")
            break
        cnt += 1
        print(f'{strike}S {ball}B')
    if temp[0] == 'exit':
        print('κ²Œμž„μ„ μ’…λ£Œν•©λ‹ˆλ‹€.')
    else:
        print('승리!!')
        print(f'{cnt}번 λ§Œμ— λ§žμΆ”μ…¨μœΌλ©°, {result_list[0]} μ†Œμš”. ν˜„μž¬ μ‹œκ°„ :',now.strftime('%Y-%m-%d %H:%M:%S'))
profile
Carrot_hyeong

0개의 λŒ“κΈ€