👉 오늘 한 일
프로그래머스 문제풀이
1. 가운데 글자 가져오기
- lv 1, 정답률 82%
- 문자열 슬라이싱 활용
def solution(s):
idx = int(len(s)//2)
return s[idx-1:idx+1] if len(s) % 2 == 0 else s[idx]
def string_middle(str):
return str[(len(str)-1)//2 : len(str)//2 + 1]
2. 수박수박수박수박수박수?
- lv 1, 정답률 82%
- n이 짝수면 "수박"을 n // 2 회만큼 반복해야 하고, 홀수면 n // 2회만큼 반복한 후에 "수"를 붙여주면 됨
def solution(n):
return "수박" * (n // 2) if n % 2 == 0 else "수박" * (n // 2) + "수"
3. 내적
- lv 1, 정답률 82%
- zip을 사용하면 리스트 2개의 같은 인덱스를 돌 수 있음
def solution(a, b):
result = 0
for i1, i2 in zip(a, b):
result += i1 * i2
return result
def solution(a, b):
return sum([x*y for x, y in zip(a,b)])
4. 문자열 내림차순으로 배치하기
- lv 1, 정답률 80%
- sorted를 활용해 리스트로 내림차순 정렬 후 join으로 합쳐줌
def solution(s):
return ''.join(sorted(s, reverse=True))
5. 약수의 개수와 덧셈 💡
- lv 1, 정답률 80%
- 약수 개수를 구하는 함수 정의 후 left와 right의 사이 수를 모두 돌며약수의 개수가 짝수면 더하고 홀수면 빼줌
def count_measure(num):
cnt = 0
for i in range(1, num+1):
if num % i == 0:
cnt += 1
return cnt
def solution(left, right):
result = 0
for n in range(left, right+1):
if count_measure(n) % 2 == 0:
result += n
else:
result -= n
return result
- 다른 사람 풀이 💡
- 약수가 홀수개인 모든 수는 제곱수임을 활용한 풀이 -> 수학적 사고..!
def solution(left, right):
answer = 0
for i in range(left,right+1):
if int(i**0.5)==i**0.5:
answer -= i
else:
answer += i
return answer