programing/Algorithm
-
[Programmers] 최대공약수와 최소공배수programing/Algorithm 2021. 3. 7. 17:15
최대공약수와 최소공배수 연습문제 level 1 python 3 def gcd(m, n): if m < n: m, n = n, m if n == 0: return m if m % n == 0: return n else: return gcd(n, m%n) def lcm(m, n): return (m * n) / gcd(m, n) def solution(n, m): return [gcd(n, m), lcm(n, m)] 최대공약수는 유클리드 호제법으로, 최소공배수는 최대공약수를 활용하여 구현한다.
-
[Programmers] 폰켓몬programing/Algorithm 2021. 3. 7. 17:00
폰켓몬 찾아라 프로그래밍 마에스터 level 1 python 3 def solution(nums): picked = [] maxNums = len(nums) / 2; for num in nums: if len(picked) < maxNums and num not in picked: picked.append(num) return len(picked) 얼핏보면 조합문제 같아 보이지만, 사실 조합을 쓰지 않고도 충분히 풀 수 있는 문제. 복잡도 조건이 빡빡하진 않아서 최적화는 고려안해도 괜찮다. def solution(ls): return min(len(ls)/2, len(set(ls))) 선택 가능한 폰켓몬 수가 최대 n/2이기 때문에, 위와 같은 숏코딩도 가능하다.
-
[Programmers] 키패드 누르기programing/Algorithm 2021. 2. 14. 18:17
키패드 누르기 2020 카카오 인턴십 level 1 phython3 def sub_tuple(t1, t2): return (t1[0] - t2[0], t1[1] - t2[1]) def abs_tuple(t): return (abs(t[0]), abs(t[1])) def get_proper_hand(hand, left, right, left_location, right_location, target_location): left_distance = sum(abs_tuple(sub_tuple(left_location, target_location))) right_distance = sum(abs_tuple(sub_tuple(right_location, target_location))) if left_dista..
-
[Programmers] 제일 작은 수 제거하기programing/Algorithm 2021. 2. 14. 16:48
제일 작은 수 제거하기 연습문제 level 1 python3 import sys def solution(arr): _min = sys.maxsize index = None for (i, e) in enumerate(arr): if e < _min: _min = e index = i del arr[index] if len(arr) == 0: arr.append(-1) return arr 뭔가 자바스러운 풀이.. def solution(mylist): mylist.remove(min(mylist)) return mylist min 함수와 remove 함수를 사용할 수도 있다. 물론 조건에 중복된 수는 없다고 했기 때문에 가능한 것. (다만, 문제가 변경되어 -1 처리를 해주는 코드가 빠져있긴 하다)
-
[Programmers] 정수 제곱근 판별programing/Algorithm 2021. 2. 13. 21:15
정수 제곱근 판별 연습 문제 level 1 python3 import math def solution(n): root = math.sqrt(n) return math.pow(root + 1, 2) if root.is_integer() else -1 math.sqrt()의 반환값은 항상 float형이기 때문에, isinstance() 로는 제대로 확인을 할 수 없다. 왜냐하면 isinstance() 함수는 해당 변수가 어떤 자료형인지 판단하기 때문이다. 따라서 is_integer()를 사용해서 값을 기준으로 판단해야 한다.