전체 글(168)
-
[리트코드] 2. Add Two Numbers
문제 링크https://leetcode.com/problems/add-two-numbers/description/느낀 점링크드 리스트의 개념과 구현 방식에 대해서 더 이해할 수 있었음!from typing import Optionalclass ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextclass Solution: def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]: enum = 1 l1_d = 0 l2_d = 0 ..
2024.07.10 -
[리트코드] 206. Reverse Linked List
문제 링크https://leetcode.com/problems/reverse-linked-list/description/느낀 점링크드리스트가 어떻게 표현되는지 감을 잡을 수 있는 문제였다.# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: node, prev = head, None while node:..
2024.07.10 -
[리트코드] 238. Product of Array Except Self
문제 링크https://leetcode.com/problems/product-of-array-except-self/description/느낀 점아이디어를 생각해내는 것이 상당히 어려운 문제였다.. 핵심은 자기 자신의 왼쪽과 오른쪽의 곱을 모두 곱하는 것이었는데, 그 값들을 얻어내는 과정은 때려맞춘 감이 없지않아 있는 문제..from typing import List class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: answer = [] p = 1 for i in range(len(nums)): answer.append(p) p *= num..
2024.07.10 -
[리트코드] 15. 3Sum
문제 링크https://leetcode.com/problems/3sum/description/?source=submission-noac느낀 점좋은 문제라고 생각했다. 투 포인터 문제 풀이 방식을 익힐 수 있다고 생각했기 때문이다. 하지만, 이전 원소와의 중복을 제거해주지 않으면 시간 초과가 나버리거나 중복으로 인해 정답이 틀리는 고약한 문제였다.. 나는 중복 배열을 없애기 위해 리스트를 만들고 존재하는지를 검사해주었는데, 그것 때문에 시간 초과가 계속 났음..class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: answer = [] nums.sort() for i in range(len(..
2024.07.04 -
[백준] 11663 - 선분 위의 점
문제 링크https://www.acmicpc.net/problem/11663느낀 점이분 탐색의 개념이 아직 정확하게 확립이 안된 것 같은 느낌.. 그리고 등호 하나 반환 값 하나에 따라 결과가 천차만별로 달라지니 이것을 유의해서 이분 탐색 문제를 접근하자!import sysdef min_p(min): s, e = 0, len(dot) - 1 while s
2024.07.04 -
[백준] 7795 - 먹을 것인가 먹힐 것인가
문제 링크https://www.acmicpc.net/problem/7795느낀 점A -> B 집합이라고 했을 때, 경우의 수가 B의 원소의 갯수 ** A의 원소의 갯수가 나오기 때문에 시간 초과가 발생한다.(1 ≤ N, M ≤ 20,000)따라서 A 집합의 원소가 B 집합의 어느 분위수에 해당하는지를 계산하고 그 인덱스를 더해주는 방식으로 구해야 O(NlogN)이 되어서 시간초과가 발생하지 않을 수 있다. 문제를 보면 이것을 생각하기 힘들어서 고생했는데, 분위수, 순서를 구하는데 시간 초과를 피해야한다면 이분탐색으로 접근하면 될 것 같다는 느낌이 들었다. import sysT = int(sys.stdin.readline())for _ in range(T): N, M = map(int, sys.std..
2024.07.01