[TIL] 23.02.10

문종현·2023년 2월 10일
0

TIL

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

👉 오늘 한 일

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

프로그래머스 문제풀이

1. 컨트롤 제트

  • 정답률 77%
  • 문자열을 공백으로 나눠서 리스트로 변경한 후에 수를 더해주는데 Z가 들어가면 바로 앞의 수를 빼주기
def solution(s):
    s = s.split()
    result = 0
    
    for i in range(len(s)):
        if s[i] == "Z":
            result -= int(s[i-1])
        
        else:
            result += int(s[i])
            
    return result
  • 다른 사람 풀이
    • 풀이 로직은 같으나 코드 라인 수를 줄였음
def solution(s):
    answer = 0
    for i in range(len(s := s.split(" "))):
        answer += int(s[i]) if s[i] != "Z" else -int(s[i-1])
    return answer

2. 문자열 계산하기

  • 정답률 77%
  • 숫자와 부호를 나눠서 리스트에 담고, 초기값을 가장 처음 수로 설정한 후에 반복문으로 부호가 있는 위치만 돌면서 +면 부호 이후 숫자를 더해주고 -면 부호 이후 숫자를 빼줌
  • eval 함수를 쓰면 편하게 풀 수 있지만 직접 구현하고 싶었음
def solution(my_string):
    s = my_string.split()
    idx = 1
    result = int(s[idx-1])
    for symbol in s[1::2]:
        if symbol == "+":
            result += int(s[idx+1])
            
        else:
            result -= int(s[idx+1])
            
        idx += 2
    return result
  • 다른 사람 풀이
    • - 기호를 + -로 바꾸고 + 로 split해서 마이너스 부호를 살린 뒤 모두 더해줌.. 정말 참신한 풀이인 듯 하다
def solution(my_string):
    return sum(int(i) for i in my_string.replace(' - ', ' + -').split(' + '))

3. 구슬을 나누는 경우의 수

  • 정답률 76%
  • 팩토리얼을 계산하는 함수 생성 후 공식에 맞게 식 작성
def factorial(num):
    f = 1
    for n in range(2, num+1):
        f *= n
    
    return f

def solution(balls, share):
    return factorial(balls) / (factorial(balls-share) * factorial(share))
  • 다른 사람 풀이
    • math 모듈의 comb() 활용
import math
def solution(balls, share):
    return math.comb(balls, share)

4. 외계어 사전 📌

def solution(spell, dic):
    spell = set(spell)
    for s in dic:
        if not spell-set(s):
            return 1
    return 2
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글