Stay Hungry Stay Foolish

TIL

[TIL] 2024년 11월 07일

dev스카이 2024. 11. 7. 23:06

파이썬

코드 비교

 

1️⃣ 컴프리헨션 사용

def correct(student_answer, answers):
    return sum(1 for i, ans in enumerate(answers) if ans == student_answer[i % len(student_answer)])
  • sum(1 for ...)에서 1은 각 조건이 True일 때 더할 값이다.
  • sum 함수는 조건에 맞는 모든 1 값을 합산하므로, 결과적으로 += 1과 같은 효과를 낸다.

 

2️⃣ 컴프리헤션 사용 X

def correct(student_answer, answers):
    count = 0
    for i, ans in enumerate(answers):
        if ans == student_answer[i % len(student_answer)]:
            count += 1
    return count

 

 

약수 구하기

약수는 일반적으로 1부터 sqrt(i)까지만 확인하면 된다. 예를 들어, i가 36이라면 1 x 36, 2 x 18, 3 x 12, 4 x 9, 6 x 6 등의 약수를 가지며, sqrt(36) 이후로는 중복 계산이 된다. 이렇게 하면 약수의 개수 계산이 훨씬 빨라져 시간 효율성을 개선할 수 있다.

  • 6의 약수는 [1, 2, 3, 4, 6, 9, 12, 18, 36] 이 있다.
  • 약수 6 이후로는 다시 작은 수와 곱하면서 확인하는데 이미 앞에서 계산을 했기 때문에 중복 계산이 된다는 것이다.
  • 따라서 제곱근을 통해 중복을 제거해서 시간 단축을 해야 한다.

 

제곱근 구하는 방법

 

1️⃣ 1. math.sqrt()

import math
math.sqrt(36) # 6.0

 

2️⃣ 2. 제곱(**)

36**0.5 # 6.0

 

 

📜 작성한 게시글

[Programmers 코딩테스트 L1. 콜라 문제] 👉 https://dev-cloud.tistory.com/383

 

[Programmers 코딩테스트 L1. 기사단원의 무기] 👉 https://dev-cloud.tistory.com/384

 

[BOJ 코딩테스트 5212. 지구 온난화] 👉 https://dev-cloud.tistory.com/385

 

 


'TIL' 카테고리의 다른 글

[TIL] 2024년 11월 09일  (0) 2024.11.10
[TIL] 2024년 11월 08일  (2) 2024.11.09
[TIL] 2024년 11월 06일  (0) 2024.11.06
[TIL] 2024년 10월 30일  (0) 2024.10.30
[TIL] 2024년 10월 29일  (0) 2024.10.29