본문 바로가기

Python265

[HackerRank] Caesar Cipher def caesarCipher(s, k): # Write your code here length = len(s) str_list = list(s) k %= 26 for i in range(length): char_ord = ord(str_list[i]) if char_ord >= ord('A') and char_ord ord('Z'): diff = ord('Z') - char_ord index = (ord('A')-1) + (k-diff) str_list[i] = chr(index) else: str_list[i] = chr(char_ord+k) elif char_ord >= ord('a') and char_ord ord('z'): diff = ord('z') - char_ord index = (ord(.. 2023. 5. 19.
[HackerRank] Two Characters def alternate(s): # Write your code here result_list = [] def gen_comb(arr,n): result = [] if n == 0: return [[]] for i in range(len(arr)): element = arr[i] rest_arr = arr[i+1:] for c in gen_comb(rest_arr,n-1): result.append([element]+c) return result def validate(arr): length = len(arr) if length >=2: first, second = arr[0],arr[1] for j in range(length): if j%2 == 0 and arr[j] != first: return .. 2023. 5. 19.
[HackerRank] The Power Sum # 정답 코드 def powerSum(X, N): # Write your code here def helper(target,power,num): if target == 0: return 1 if target math.sqrt(target): return 0 # 현재 수를 포함하는 경우와 포함하지 않는 경우의 수를 재귀적으로 계산 include = helper(target-num**power,power,num+1) exclude = helper(target,power,num+1) return include + exclude return helper(X,N,1) 이번 문제는 주어진 X값을 N제곱수로 만들 수 있는 경우의 수를 구하는 문제이다. 처음에 이 문제를 풀이했을 때는 X보다 작.. 2023. 5. 18.
[HackerRank] Sherlock and Cost def cost(B): # Write your code here length = len(B) dp = [[0]*2 for _ in range(length)] for i in range(1,length): # A[i] == B[i]인 경우 dp[i][0] = max(abs(B[i]-B[i-1])+dp[i-1][0], abs(B[i]-1)+dp[i-1][1]) # A[i] == 1인 경우 dp[i][1] = max(abs(1-B[i-1])+dp[i-1][0], dp[i-1][1] ) return max(dp[length-1]) 이번 문제는 자연수 배열 B가 주어질 때, 이 B로부터 새로운 배열 A를 정의할 때 모든 배열의 원소 A[i]는 1 2023. 5. 15.
[HackerRank] The Maximum Subarray def maxSubarray(arr): # Write your code here len_arr = len(arr) dp_array = [0]*(len_arr) dp_sequence = [0]*(len_arr) dp_array[0], dp_sequence[0] = arr[0], arr[0] for i in range(1,len_arr): dp_array[i] = max(arr[i], arr[i]+dp_array[i-1]) for i in range(1,len_arr): dp_sequence[i] = max(dp_sequence[i-1], dp_sequence[i-1]+arr[i], arr[i]) return [max(dp_array),dp_sequence[len_arr-1]] 이번 문제는 주어진 배열(ar.. 2023. 5. 15.
[HackerRank] The Coin Change Problem def getWays(n, c): # Write your code here coin_count = len(c) dp = [[0]*(n+1) for _ in range(coin_count+1)] for i in range(1,coin_count+1): dp[i][0] = 1 for i in range(1,coin_count+1): for j in range(1,n+1): coin_value = c[i-1] if coin_value > j : dp[i][j] = dp[i-1][j] else: dp[i][j] = dp[i-1][j] + dp[i][j-coin_value] return dp[coin_count][n] 이번 문제는 주어진 c 배열 안의 값들로 n을 만들 수 있는 경우의 수를 구하는 문제이다. 문제.. 2023. 5. 14.