320x100 Blog189 [Codewars]4kyu - The observed PIN 이 문제는 문제가 좋다기보다는 파이썬의 새로운 모듈을 알게 된 문제여서 글을 쓴다.. 문제는 간단하다. 비밀번호로 추정되는 숫자가 들어오는데, 확실하지 않아서 해당 수에서 인접한(상하좌우, 대각선 제외) 숫자까지 모두 눌러봐야 하는 상황에서 가능한 모든 비밀번호를 return하면 된다. 나는 이렇게 힘들게 작성했다. def get_pins(observed): a = [] for char in observed: num = int(char) temp = [num] if num == 0: temp.append(8) a.append(temp) continue if num == 8: temp.append(0) if num - 1 >= 1 and num % 3 != 1: temp.append(num-1) if nu.. 2021. 1. 31. [Codewars]5kyu - Sum of pairs 어떤 수들의 리스트가 주어지고, target이 주어지는데, list에서 target을 맞추기 위한 쌍을 찾아서 return하면 된다. 쉬워 보이는데 막상 하면 어렵다. 그냥 이중 for문을 사용하면 무조건 시간 초과가 뜬다. NOTE에 쓰여 있듯이 길이가 천만이 넘는 리스트도 나오기 때문이다. 그리고 문제의 설명이 좀 모호한 점이 있는데, 해당 target을 만들기 위한 쌍이 여러개 있다면 두 수의 인덱스 중 나중 인덱스가 가장 빠른(왼쪽에 있는) 쌍을 골라 내보내야 한다. 이중 for문을 사용한다면 시간 복잡도는 O(n^2)이고 그 코드는 이렇다. def sum_pairs(ints, s): for i in range(1,len(ints)): for j in range(i): if ints[i] + in.. 2021. 1. 31. [CLASS 3]백준 1676번, 2579번 1676번 : 팩토리얼 0 의 개수 상당히 쉬운 문제이다. 일단 팩토리얼을 그냥 구하고 10으로 나누는 방법을 쓰면 무조건 시간 초과를 맞을 것이다. 그러므로 모두 더하는 방식이 아닌 다른 방식을 사용했다. 내 코드: def zeroCount(n): f = 0 t = 0 for i in range(n,0,-1): k = i while k % 5 == 0 or k % 2 == 0: if k % 5 == 0: k //= 5 f += 1 if k % 2 == 0: k //= 2 t += 1 return min(f,t) print(zeroCount(int(input()))) 이렇게 각각 f와 t 변수에 곱하는 모든 수의 소인수 중 5와 2의 개수를 저장한 뒤 마지막에 그중 크지 않은 값을 반환하는 방법으로 풀 .. 2021. 1. 30. [CLASS 3]백준 1463번 - 1로 만들기 1463번 : 1로 만들기 내 개인적인 생각으로 이 문제를 가장 명료하게 풀 수 있는 방법은 재귀인것 같다. 그러나 수가 커지면 너무나도 많은 재귀를 해야 하기 때문에 비효율적이다. 내 코드(재귀): # 재귀(재귀스택 초과) n = int(input()) def find(n): countList = [] if n == 1: return 0 countList.append(find(n-1) + 1) if n % 3 == 0: countList.append(find(n//3) + 1) if n % 2 == 0: countList.append(find(n//2) + 1) return min(countList) print(find(n)) 1이 아니라면 해당 수에서 1을 뺀값, 2로 나누어 떨어진다면 2로 나눈 값.. 2021. 1. 29. 이전 1 ··· 26 27 28 29 30 31 32 ··· 48 다음