본문 바로가기

전체 글

(61)
Leetcode Add Two numbers class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: num1 = "" num2 = "" now = l1 while now: num1 = str(now.val) + num1 now = now.next now = l2 while now: num2 = str(now.val) + num2 now = now.next result = list(str(int(num1) + int(num2))) answer = ListNode(result[0], None) for i in range(1, len(result)): temp = ListNode(result[i], answer) answer = temp return answer 문..
Leetcode swap nodes in pairs class ListNode: def __init__(self, v=0, next=None): self.v = v self.next = next class Solution: def swapPairs(self, head: ListNode) -> ListNode: r = f = ListNode(None) f.next = head while head and head.next: str = head.next head.next = str.next str.next = head f.next = str head = head.next f = f.next.next return r.next if __name__=="__main__": solution = Solution() head = ListNode(1,ListNode(2, ..
Leetcode two sum class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dict = {} for i, v in enumerate(nums): if target - v not in dict: dict[v] = i else: return [dict[target - v], i] 문제 정수 배열들이 주어지고, 더해져서 특정 타겟에 해당하는 정수로 만드는 두 개의 숫자의 인덱스들을 반환하게 된다. 각각의 입력이 정확히 하나의 해를 가질 수 있다고 가정한다. 이 때는 같은 요소를 두번 사용할 수 없게 된다. 풀이 방법 배열내 숫자의 의미가 주어져 있어, brute force를 사용한다. 요소 하나하나씩 더해보면서 target과 일치하는지 알아낸다. ..
Leetcode my calendar III from sortedcontainers import SortedDict class MyCalendarThree: def __init__(self): self.timeline = SortedDict() def book(self, start: int, end: int) -> int: self.timeline[start] = self.timeline.get(start, 0) + 1 self.timeline[end] = self.timeline.get(end, 0) - 1 ans = 0 activeEvents = 0 for count in self.timeline.values(): activeEvents += count ans = max(ans, activeEvents) 문제 달력에 k개의 예약이 존재하는 가장..
2022 하계모각코 6주차 결과 mem={0:0, 1:1} mod=1000000007 def fib(t): if t in mem: return mem[t] else: if t%2==0: a=fib(t//2-1)%mod b=fib(t//2)%mod f=((2*a+b)*b)%mod else: f=(fib((t+1)//2)%mod)**2+(fib((t-1)//2)%mod)**2 mem[t]=f%mod return f%mod t=int(input()) print((fib(t)%mod)*(fib(t+1)%mod)%mod) 피보나치 수열을 푸는데 시간이 조금 오래 걸렸습니다. 행렬을 구하는데 어려움이 조금 있었습니다.
2022 하계모각코 6주차 계획 마지막주차입니다. 마지막주차는 어려운 문제를 풀어볼예정입니다. https://www.acmicpc.net/problem/11440 11440번: 피보나치 수의 제곱의 합 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 수학적인 지식을 쌓기위하여 기본적인 피보나치 문제를 풀 예정입니다.
2022하계모각코 5주차 결과 import sys import heapq inf = sys.maxsize v, e = map(int, sys.stdin.readline().split()) g = [[] for _ in range(v + 1)] k = int(sys.stdin.readline()) for i in range(e): a, b, c = map(int, sys.stdin.readline().split()) g[a].append([c, b]) result = [inf for _ in range(v + 1)] result[k] = 0 q = [] heapq.heappush(q, [0, k]) while q: dis, end = heapq.heappop(q) for d, x in g[end]: d += dis if d < resu..
2022모각코 5주차 계획 https://www.acmicpc.net/step/26 최단 경로 단계 모든 간선의 가중치가 0 또는 1일 때, BFS를 응용하거나 다익스트라 알고리즘을 사용하는 문제 www.acmicpc.net 최단경로를 통하여 공부를 해볼예정입니다.