[TIL] 23.02.05

문종현·2023년 2월 5일
0

TIL

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

👉 오늘 한 일

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

프로그래머스 문제풀이

1. 소인수분해 📌

  • 프로그래머스 level 0. 소인수분해
  • 정답률 79%, try 2
  • 처음 시도한 코드 : 1, 7, 16, 23, 24 실패(정확성 79.2)
  • n이 1보다 클때만 반복. 2부터 시작해서 i로 나누어 떨어지면 리스트에 추가
  • n //= i 해준 뒤 for문을 멈춰주지 않았기 때문에 의도한대로 구현이 되지 않았음!
def solution(n):
    result = []
    while n > 1:
        for i in range(2, n+1):
            if n % i == 0:
                result.append(i)
                n //= i
    result = sorted(list(set(result)))
    return result
  • retry => break를 추가해서 n이 i로 나누어 떨어지면 for문을 멈춰줌
def solution(n):
    result = []
    while n > 1:
        for i in range(2, n+1):
            if n % i == 0:
                result.append(i)
                n //= i
                break
    result = sorted(list(set(result)))
    return result
  • 다른 사람 풀이
    • i가 n보다 작을 때만 반복. i를 1씩 증가시키며 소인수를 리스트에 추가한 뒤 중복 제거
def solution(n):
    result = []
    i = 2
    while i <= n:
        if n % i == 0:
            result.append(i)
            n //= i
            
        else:
            i += 1
            
    result = sorted(list(set(result)))
    
    return result

2. 공 던지기

  • 정답률 79%
  • k번째에 공을 던지는 사람의 번호를 result에 추가. 한 바퀴를 돌때마다 인덱스를 초기화시킴(리스트의 길이가 짝수면 if문에만 걸리고 홀수면 elif문과 if문을 번갈아서 돌게 됨). result의 마지막 원소를 return
def solution(numbers, k):
    idx = -2
    length = len(numbers)
    result = []
    for _ in range(k):
        idx += 2
        if idx == length:
            idx = 0
        elif idx == length + 1:
            idx = 1
        result.append(numbers[idx])

    return result[-1]
  • 다른 사람 풀이
    • 식을 세워서 간단하게 풀 수 있었다..!
def solution(numbers, k):
    return numbers[2 * (k - 1) % len(numbers)]
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글