본문 바로가기

반응형

자료구조&알고리즘

(33)
[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] 1110-더하기 사이클 https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net raw_num = int(input()) cnt = 0 num = raw_num while True: sum_raw_num = (num // 10) + (num % 10) new_num = int(str(num % 10) + str(sum_raw_num % 10)) cnt += 1 if raw_num == new_num: break num = new_num print(cnt)
[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)
[자료구조] 1. 자료구조 자료구조 - 컴퓨터상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조 - 자료구조의 알맞은 선택을 통해 효율적인 알고리즘을 사용할 수 있게 하여 성능을 향상 시킨다 자료구조의 분류 구조 설명 종류 선형구조 데이터를 연속적으로 연결한 자료구조 리스트(선형리스트, 연결리스트), 스택, 큐, 데크 비성현 구조 데이터를 비연속적으로 연결한 자료구조 트리, 그래프
복잡도 Complexity 1. 시간복잡도: 알고리즘을 위해 필요한 연산의 횟수. 즉, 특정한 크기의 입력에 대해 알고리즘이 얼마나 오래 걸리는지를 의미. 2. 공간복잡도: 알고리즘을 위해 필요한 메모리 사이즈. 즉, 특정한 크기의 입력에 대해 알고리즘이 얼마나 많은 메모리를 차지하는지 의미. 최근 대용량 시스템이 보편화 되면서 공간복잡도 보다 시간복잡도가 중심이 됨. 프로그래밍에서 시간복잡도에 가장 영향을 많이 미치는 요소는 반복문이다. 알고리즘 성능 표기법 1. Big O 표기법 - 알고리즘 최악의 실행 시간 표기 - 아무리 최악의 상황이라도 이정도의 성능은 보장한다는 의미로 일반적으로 많이 사용함 2. 오메가 표기법 - 알고리즘 최상의 실행 시간 표기 3. 세타 표기법 - 알고리즘 평균 실행 시간 표기 시간복잡도의 Big O..
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