일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 디자인 패턴
- Spring multimodule
- 빈 조회 2개 이상
- 빈 충돌
- 전략패턴 #StrategyPattern #디자인패턴
- TiL
- 코딩테스트 준비
- 단기개발자코스
- 1주일회고
- 디자인패턴
- 파이썬
- JavaScript
- 구글 OAuth login
- jwttoken
- 인프콘 2024
- spring batch 5.0
- 개발자 취업
- 99클럽
- Python
- @FeignClient
- 개발자부트캠프추천
- jwt
- infcon 2024
- 프로그래머스 이중우선순위큐
- 커스텀 헤더
- KPT회고
- 항해99
- DesignPattern
- 취업리부트코스
- 프로그래머스
- Today
- Total
목록알고리즘 with python/알고리즘 스터디 (46)
m1ndy5's coding blog

https://leetcode.com/problems/daily-temperatures/ 바로 풀이법을 떠올리진 못했던 문제였다. (떠올렸던 방법은 계속해서 비교하는 거였는데 10^5개까지 리스트 길이가 가능해서 최악에 경우에는 시간초과 당연했다) 그냥 스택이나 큐를 풀차례여서 아 둘 중에 하나를 쓰고 풀어야겠다 라고 생각이 들어서 풀었던 문제..? 이런 비슷한 유형들을 많이 풀어서 해결법을 좀 익혀놔야겠다! 아이디어 생각했던 방법은 스택에는 인덱스를 저장해놓고 스택의 마지막 값과 들어오는 값을 비교해서 들어오는 값이 더 크면 그 둘의 인덱스 차이를 저장하는 방법이었다. class Solution: def dailyTemperatures(self, temperatures): l = len(temperat..
https://leetcode.com/problems/implement-queue-using-stacks/ class MyQueue: def __init__(self): self.stack = [] self.pointer = 0 def push(self, x: int) -> None: self.stack.append(x) def pop(self) -> int: tmp = self.stack[self.pointer] self.pointer += 1 return tmp def peek(self) -> int: return self.stack[self.pointer] def empty(self) -> bool: return self.pointer == len(self.stack)Stack을 이용하여 Queue..
https://leetcode.com/problems/implement-stack-using-queues/ class MyStack: def __init__(self): self.q = [] def push(self, x: int) -> None: self.q.append(x) def pop(self) -> int: return self.q.pop() def top(self) -> int: return self.q[-1] def empty(self) -> bool: return len(self.q)==0queue를 이용하여 Stack을 만들어보는 자료구조 문제였다.
https://leetcode.com/problems/array-partition/ class Solution: def arrayPairSum(self, nums: List[int]) -> int: nums.sort() answer = 0 for i in range(0, len(nums), 2): answer += nums[i] return answer큰 애들은 큰 애들이랑 붙어야 큰 애들이 많이 살아남을 거 같아서 정렬한 다음 짝수번째 인덱스 애들만 더했다!
https://leetcode.com/problems/3sum/ 1차 시도 class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: answer = [] check_multiple = [] def bt(pair, curr, l): if len(pair) == 3: s = set(pair) if sum(pair) == 0 and s not in check_multiple: answer.append(pair[:]) check_multiple.append(s) return for i in range(curr, l): pair.append(nums[i]) bt(pair, i + 1, l) pair.pop() bt([], 0, len(nums..
https://leetcode.com/problems/longest-palindromic-substring/ 1차 코드 class Solution: def longestPalindrome(self, s: str) -> str: # 팰린드롬인지 확인하는 함수 def checkPalindrome(s1, s2): s2 = s2[::-1] if s1 == s2: return True else: return False # 최대 길이 m = 0 l = len(s) # 문자 한개면 그대로 리턴 if l == 1: return s answer = s[0] # 투포인터 # 뒤에서 하나씩 빼면서 start 포인터와 같은 문자인지 확인 for start in range(l-1): for end in range(l-1, st..
https://leetcode.com/problems/group-anagrams/ class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: dic = {} for word in strs: # 알파벳 순으로 정렬(ate -> aet) w = ''.join(sorted(word)) if w not in dic: dic[w] = [word] else: dic[w].append(word) return list(dic.values())Python sorted 병합 정렬 + 삽입 정렬 아이디어를 더한 하이브리드 방식 O(NlogN)의 시간복잡도를 가짐 정렬된 결과를 리스트 자료형으로 반환한다.
https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 단순 그리디처럼 보였지만 알고보니까 굉장한 반례가 숨어있던(?) 문제였다... 이 반례를 찾은 사람도 정말 대단하다ㅋㅋㅋㅋ 단순히 cost가 더 적은 애로 바꿔서 계산하면 될 줄 알았는데 방향을 틀면 600원이 추가되야되기 때문에 당장은 원래 방향인 애가 더 쌌는데 다음번에는 이전 애 방향으로 내려오는 게 더 쌀 수도 있던 문제였다. 벽 1000 벽 900 ? 벽 (옆에서 오면 1000원, 위에서..
https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어떻게 풀어야할지 잘 모르겠어서 (시간초과되는 로직밖에 생각이 안남ㅠㅠㅠ) 다른 사람들의 풀이를 보고 참고해 풀었다. 이 문제는 투포인터 알고리즘을 사용하여 풀어야 하는 문제였다! 투포인터 알고리즘이란? 리스트에 순차적으로 접근을 할 때 start index와 end index를 정해서 옮겨가면서 접근하는 방식이다. 위에 문제에서는 start index와 end index를 옮겨가면서 해당 인덱스..
https://school.programmers.co.kr/learn/courses/30/lessons/169199 이것도 다른 사람 코드를 확인하고 푼 문제여서..ㅎㅎㅎ 정리할겸! ``` from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, 1, -1] def solution(board): answer = -1 q = deque() height = len(board) width = len(board[0]) visited = [[0 for _ in range(width)] for _ in range(height)] for i in range(height): for j in range(width): if board[i][j] == 'R'..