[TIL] 23.02.23

문종현·2023년 2월 23일
0

TIL

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

👉 오늘 한 일

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

프로그래머스 문제풀이

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]
  • 다른 사람 풀이
    • if문을 쓰지 않아도 구현 가능함
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
  • 다른 사람 풀이
    • sum을 활용해 코드 라인을 줄임..!
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
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글