본문 바로가기

반응형

자료구조&알고리즘/알고리즘-문제풀이

(26)
[BAEKJOON] 4673-셀프 넘버 https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net # 1부터 10000까지의 수를 수열식을 통해 계산한다. # 계산된 숫자를 리스트에 넣는다. 이때, 계산 된 수는 생성자가 있는 수이다. target = 10000 numList = [i for i in range(1, target + 1)] genNum = 0 genNumList = [] for num in numList: sepNum = lis..
[BAEKJOON] 2577-숫자의 개수 https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net mul = 1 for i in range(0, 3): mul *= int(input()) mul_list = list(str(mul)) num_dict = { key: 0 for key in range(0, 10) } for m in mul_list: value = num_dict.get(int(m), None) num_dict[int(m)] = value + 1 for k, v in num_dict.items(): print(v)
[BAEKJOON] 2884-알람시계 https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net _hour, _minute = map(int, input().split()) hour = 0 minute = 0 minute = _minute - 45 if minute >= 0: print(_hour, minute) else: hour = _hour - 1 if hour < 0: print(hour + 24, minute + 60) else: print(hour, minute + 60)
Leetcode-easy-13. Roman to Integer - i와 i+1을 비교해서 앞에 있는 수가 큰 수면 앞에 수를 더하고, 뒤에 있는 수 비교 class Solution: def romanToInt(self, s: str) -> int: romanDict = { "I" : 1, "V" : 5, "X" : 10, "L" : 50, "C" : 100, "D" : 500, "M" : 1000 } result = 0 idx = 0 while idx = romanDict[s[idx+1]]: result += romanDict[s[idx]] idx += 1 else: temp = romanDict[s[idx+1..
Leetcode-easy-9. Palindrome Number class Solution(object): def isPalindrome(self, x: int) -> bool: # positive만 가능 if x < 0: return False remains = list() while True: remains.append(x % 10) x = x // 10 if x == 0: break if remains == list(reversed(remains)): return True else: return False
Leetcode-easy-7. Reverse Integer class Solution: def reverse(self, x: int) -> int: intToString = str(x) # zero check if len(intToString) == 1: return x elif intToString[-1] == '0': intToString = intToString[:-1] # sign check flag = False if intToString[0] == '-': flag = True intToString = intToString[1:] reverseList = reversed([intToString[idx] for idx in range(0, len(intToString))]) reverse = int(''.join(reverseList)) if rever..
Leetcode-easy-1.Two Sum 1. 첫번째 코드 - O(n^2) class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ # 맨 앞의 element부터 차례대로 더한 후 맞는 값 return idx = 0 while idx < len(nums): num = nums[idx] for i in range(idx+1, len(nums)): if num + nums[i] == target: return [idx, i] idx += 1 2. 두번째 코드 - Hash Table 이용 ''' x를 고정하고 target-x가 존재하는지 확인 존재하면 index return ''' class..
[프로그래머스-Level2] 프린터 나의 풀이 - location의 값을 Integer 일때 어떻게 구분해야 할 지 고민하다가 문자열로 바꿈 (length 비교) - targetElement의 length 보다 큰 수가 priorities array에 존재하면 push하여 맨 뒤에 넣고, 그렇지 않으면 프린트 됨 (array에서 그대로 제거되면서 순번(answer)은 1씩 증가) - 요청한 element 이면 return function solution(priorities, location) { priorities.map((element, index) => { let tempElement = priorities.shift(); element = ''; for (let i = 0; i < tempElement; i++) { element +..