오늘의 코딩공부_2.8(수)

나은·2023년 2월 8일

오늘의 코딩공부

목록 보기
2/23

1.없는 숫자 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/86051

# 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. 
# numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성

def solution(numbers):
    list=range(10) # 0~9가 들어있는 리스트 만들기
    sum=0
    for i in list:
        if i not in numbers:
            sum=sum+i
    return sum

numbers=[1,2,3,4,6,7,8,0]

print(solution(numbers))

"""새롭게 알게된거
1. 여러개 들어있는 리스트 만들려면 
=>range()사용하기
2. for하고 if 같이 써야할떄는
=>for 먼저 쓰기
3. 리스트에 존재하는지 확인하는 방법? 
=>if i in list: 또는 if i not in list:
4. 연산 sum=+i 는 sum=sum+i 와 같나? 
=>아니! sum+=i랑 같음
"""

다른사람풀이(2개만 공부)
1. 단순한 합이니까 이런 접근도 가능

def solution(numbers):
    return 45 - sum(numbers)
    
  1. 람다 아예 모름(파이써닉하니 패스)
solution = lambda x: sum(range(10)) - sum(x)
  1. 숫자 문자열과 영단어
    https://school.programmers.co.kr/learn/courses/30/lessons/81301
# 네오와 프로도가 숫자놀이를 하고 있습니다. 
# 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
# 영어를 다 숫자로 바꾸기
def solution(s):
    s = s.replace('zero','0')
    s = s.replace('one','1')
    s = s.replace('two','2')
    s = s.replace('three','3')
    s = s.replace('four','4')
    s = s.replace('five','5')
    s = s.replace('six','6')
    s = s.replace('seven','7')
    s = s.replace('eight','8')
    s = s.replace('nine','9')
    s=int(s)

    return s

s="one4seveneight"

print(solution(s))

'''
사고흐름 짜기

a 방안 (안녕~~)
    1. 문자열과 숫자 혼합된 것을 리스트로 쪼개기
    =>방법? 없는듯
    2. 딕셔너리사용해서 키에 맞는 벨류로 바꾸기
    3. 리스트를 다시 숫자로 변경

b 방안
    1, 특정문자를 다른문자로 변경하기
        - 방안1 replace는 한개는 괜찮은데 여러개를 쓰기에는 무리 x
        - 방안2 str.maketrans() 사용 ->원래문자와 바꿀문자의 길이가 같아야 사용가능하기에 부적합
        - 방안3 re.findall함수? 이 함수도 공백이나 특정 조건에 의해서만 리스트로 만드는거임 부적합
c 방안
    1. 딕셔너리로 일단 전부 선언
    2. 딕셔너리에 있는걸로 변경
        딕셔너리 : 키를 기반으로 값을 저장
        - {key,value}

d 방안
하나하나 모든걸 replace로 각각 적용
def solution(s):
    s = s.replace('zero','0')
    s = s.replace('one','1')
    s = s.replace('two','2')
    s = s.replace('three','3')
    s = s.replace('four','4')
    s = s.replace('five','5')
    s = s.replace('six','6')
    s = s.replace('seven','7')
    s = s.replace('eight','8')
    s = s.replace('nine','9')
    s=int(s)

    return s

s="one4seveneight"

print(solution(s))
'''

'''
새롭게 알아가는 거
1.딕셔너리
'''

다른사람풀이
1.

num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}

def solution(s):
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)

배워갈거
-for key, value in 딕셔너리.items(): 의미
반복할때 key와 value를 모두 사용하겠다.
-for 아래 말은 answer의 키 부분을 value로 변경하겠다는 의미

def solution(s):
    words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

    for i in range(len(words)):
        s = s.replace(words[i], str(i))

    return int(s)

배워갈거
-replace에서 리스트를 뽑아서 대치시킨다라는 발상도 가능하구나

profile
코딩공부블로그

0개의 댓글