[TIL] 23.02.19

문종현·2023년 2월 19일
0

TIL

목록 보기
85/119
post-custom-banner

👉 오늘 한 일

  • 프로그래머스 문제풀이(level 1)

프로그래머스 문제풀이

1. 음양 더하기

  • lv 1, 정답률 83%
  • 만약 signs 이 false라면 absolutes에서 같은 인덱스의 숫자를 마이너스로 바꾸고 더해줌
def solution(absolutes, signs):
    for i in range(len(absolutes)):
        if signs[i] == False:
            absolutes[i] = -absolutes[i]
    return sum(absolutes)
  • 다른 사람 풀이
    • zip을 활용하면 두 리스트를 비교할 수 있음
def solution(absolutes, signs):
    return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))

2. 제일 작은 수 제거하기 💡

  • 프로그래머스 lv 1, 제일 작은 수 제거하기
  • lv 1, 정답률 83%
  • remove로 리스트에서 제일 작은 값을 제거하고 if문으로 제거 뒤 리스트가 비었는지 확인
  • 이 문제의 모든 케이스에 대해 통과했지만 이 답은 가장 작은 값이 여러 개일 때 통과하지 못함..!
def solution(arr):
    arr.remove(min(arr))
    if arr == []:
        arr.append(-1)
    return arr
  • 다른 사람 풀이
    • 이렇게 풀면 가장 작은 값이 여러 개일 때도 통과할 수 있음
def solution(arr):
    return [i for i in arr if i > min(arr)] or [-1]

3. 없는 숫자 더하기

  • lv 1, 정답률 83%
  • numbers를 문자열 리스트로 만든 후, 문자열 0~9와 비교하며 remove 하는데 에러가 발생하면 빈 리스트 result 에 해당 값을 더해줌. for문을 빠져나와 리스트 result의 요소들을 더해줌
def solution(numbers):
    lst = [str(n) for n in numbers]
    result = []
    for c in "0123456789":
        try:
            lst.remove(c)
        except:
            result.append(c)
    return sum([int(i) for i in result])
  • 다른 사람 풀이
    • 0~9의 합이 45라는 점을 활용..!
# 직접 수에서 뺌
def solution(numbers):
    return 45 - sum(numbers)
    
# range 활용
solution = lambda x: sum(range(10)) - sum(x)
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글