본문 바로가기

코딩테스트26

[프로그래머스] Level 1. 나누어 떨어지는 숫자 배열 def solution(arr, divisor): answer = [] for element in arr: if (element % divisor) == 0: answer.append(element) if len(answer) == 0: answer.append(-1) return sorted(answer) 나누어 떨어지는 수들만 answer 리스트에 추가 만약 아무것도 추가되지 않아서 리스트 길이가 0이면 -1추가 마지막으로 정렬된 리스트 리턴 2022. 2. 18.
[프로그래머스] Level 1. 약수의 합 from math import isqrt def solution(n): answer = 0 for i in range(1, isqrt(n) + 1):# 1 if (n % i) == 0:# 2 answer += i if i != (n // i):# 3 answer += (n // i) return answer # 1 - 12의 약수를 구하기 위해 작은 수부터 나누어 준다면 (1, 12), (2, 6), (3, 4), (4, 3), (6, 2), (12, 1)이다 - 이때 4부터는 앞에것의 중복이므로 3까지만 나누어주면 된다 - 12는 3^2 = 9보다 크고 4^2 = 16보다 작으므로 isqrt(12) = 3번만 나누기를 하면 된다 i 2022. 2. 18.
[프로그래머스] Level 1. 같은 숫자는 싫어 def solution(arr): answer = [] tmp = None# 마지막으로 answer 리스트에 추가된 원소 for i in arr: if tmp == i: pass else: answer.append(i) tmp = i return answer 리스트 요소 돌면서 tmp가 arr의 요소와 같은지 확인 같으면 pass하고 다르면 answer 리스트에 추가한 후 tmp 바꿔줌 2022. 2. 16.
[프로그래머스] Level 1. 최대공약수와 최소공배수 import math def solution(n, m): gcd = math.gcd(n, m) lcm = gcd * (n/gcd) * (m/gcd) answer = [gcd, lcm] return answer math.gcd() - greatest common divisor, 즉 최대공약수를 구해준다 - 파이썬 3.5부터 사용가능하다. 원래는 2개의 인자만 지원이 되었으나 3.9부터 임의의 개수 인자에 대한 지원이 추가되었다. math.lcm() - lowest common multiple, 즉 최소공배수를 구해준다 - 버전 3.9부터 사용 가능하다. 그래서 프로그래머스에서는 사용할 수 없는 함수이다 2022. 2. 15.
[프로그래머스] Level 1. 두 정수 사이의 합 def solution(a, b): if a == b: return a else: answer = 0 for i in range(min(a,b), max(a,b)+1): answer += i return answer def solution(a, b): if a == b: return a else: return sum(range(min(a,b), max(a,b)+1)) range()를 통해 a와 b 사이에 속한 모든 정수를 구한다 range(a, b)면 a부터 b-1까지 구하므로 b+1을 해야한다 이 때 b가 더 커야하므로 min(), max()를 통해 더 작고 큰 것을 구한다 sum() - iterable의 합을 구하는 함수 2022. 2. 11.
[프로그래머스] Level 1. 정수 제곱근 판별 isqrt() import math def solution(n): sqrt = math.isqrt(n)# 정수형 제곱근 얻기 if sqrt * sqrt == n:# n이 정수였으니 얻은 제곱근을 다시 제곱하면 원래 값 n이 나올것 return pow(sqrt+1, 2) else : return -1 - 파이썬의 math.isqrt() 메소드는 음이 아닌 정수 값 n의 정수 제곱근을 반환한다 - python 3.8부터 사용가능하다 sqrt() import math def solution(n): sqrt = math.sqrt(n) if int(sqrt) * int(sqrt) == n: return pow(sqrt+1, 2) else : return -1 - 파이썬의 math.isqrt() 메소드는 음이 아닌.. 2022. 2. 10.