ps(19)
-
[리트코드] 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 -
[SOFTEER] 진정한 효도
문제 링크https://softeer.ai/practice/7374 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai느낀 점파이썬 리스트의 이차원 배열에서 열을 가져오고 싶을 때, matrix[:][0]과 같은 형식으로 하면 안된다. 왜냐하면 [:]는 얕은 복사를 하기때문에 뒤에서 슬라이싱을하면 첫 번째 행을 가져옴 따라서 [m[0] for m in matrix] 와 같이 작성해야함import sysdef judge(m): m.sort() if m == [1, 1, 1] or m == [2, 2, 2] or m == [3, 3, 3]: return 0 elif m == [1, 1, 2] or m == [1, 2, 2] or m == [2, 2, 3] or ..
2024.06.27 -
[SOFTEER] [한양대 HCPC 2023] X marks the Spot
문제 링크https://softeer.ai/practice/7703 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai느낀 점- 문자열에서 특정 문자를 찾을 때, find 함수를 사용하면 빠르게 찾을 수 있다.(내부적으로 C로 구현되어있다고함)- 엄청 긴 문자열을 붙일 때, +로 하지말고, 리스트에 담은 후, 문자열의 join함수로 붙여야 시간 초과가 안남!
2024.06.27 -
[SOFTEER] 바이러스
문제 링크https://softeer.ai/practice/6284 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai느낀 점로직 자체는 단순한데, 수가 엄청 큰 경우, 한 번 계산할 때 마다 나누어주면서 해야 시간 초과가 안나는 경우도 있다는 것을 알게됨. 그리고 pow함수에는 중간 중간 나눠주는 몫을 지정할 수도 있다 ! import sysnumbers = list(map(int, sys.stdin.readline().split()))answer = numbers[0] * pow(numbers[1], numbers[2], 1000000007) % 1000000007print(answer)
2024.06.27