👉 오늘 한 일
프로그래머스 문제풀이
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))
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