파이썬
-
Problem : https://leetcode.com/problems/different-ways-to-add-parentheses Difficulty : Medium Status : Solved Time : 00:18:44 문제 설명 더보기주어진 문자열과 부호로 이루어진 수식을 입력으로 받아, 숫자와 연산자를 그룹화하는 모든 가능한 경우의 수를 계산하여 반환하라. 어떤 순서로 반환하여도 상관 없다. 생성된 테스트케이스는 출력값이 32비트 정수 내에 존재하며, 결과의 서로 다른 가짓수는 10^4를 초과하지 않는다. 풀이 처음에는 DP로 풀면서 뭐야, 왜 이렇게 복잡해? 싶었으나.. 내 착각이었다. DP로 풀면 결국 O(N^3)에 가까운 비효율적인 방식의 풀이가 되므로, 조금 다른 접근 방식이 필요하다..
241. Different Ways to Add ParenthesesProblem : https://leetcode.com/problems/different-ways-to-add-parentheses Difficulty : Medium Status : Solved Time : 00:18:44 문제 설명 더보기주어진 문자열과 부호로 이루어진 수식을 입력으로 받아, 숫자와 연산자를 그룹화하는 모든 가능한 경우의 수를 계산하여 반환하라. 어떤 순서로 반환하여도 상관 없다. 생성된 테스트케이스는 출력값이 32비트 정수 내에 존재하며, 결과의 서로 다른 가짓수는 10^4를 초과하지 않는다. 풀이 처음에는 DP로 풀면서 뭐야, 왜 이렇게 복잡해? 싶었으나.. 내 착각이었다. DP로 풀면 결국 O(N^3)에 가까운 비효율적인 방식의 풀이가 되므로, 조금 다른 접근 방식이 필요하다..
2024.09.19 -
Problem : https://leetcode.com/problems/largest-number Difficulty : Medium Status : Solved Time : 00:15:23 문제 설명 더보기음의 정수가 아닌 nums를 입력으로 받아, 이들을 하나로 이었을 때 가장 큰 수가 되도록 정렬하여 반환하라. 결과값이 매우 클 수 있으므로, 정수 대신 문자열 형태로 반환하도록 한다. 풀이 분명히 어디서 많이 봤었는데...? 하는 문제. 정렬을 그리디하게 수행하면 되는데, 임의의 수 a, b에 대해서 (a, b를 이은 결과) >= (b, a를 이은 결과)가 항상 유지되도록 정렬하면 된다. 그리디 + 정렬 문제. 풀이 코드class Solution: @staticmethod def com..
179. Largest NumberProblem : https://leetcode.com/problems/largest-number Difficulty : Medium Status : Solved Time : 00:15:23 문제 설명 더보기음의 정수가 아닌 nums를 입력으로 받아, 이들을 하나로 이었을 때 가장 큰 수가 되도록 정렬하여 반환하라. 결과값이 매우 클 수 있으므로, 정수 대신 문자열 형태로 반환하도록 한다. 풀이 분명히 어디서 많이 봤었는데...? 하는 문제. 정렬을 그리디하게 수행하면 되는데, 임의의 수 a, b에 대해서 (a, b를 이은 결과) >= (b, a를 이은 결과)가 항상 유지되도록 정렬하면 된다. 그리디 + 정렬 문제. 풀이 코드class Solution: @staticmethod def com..
2024.09.18 -
Problem : https://leetcode.com/problems/evaluate-boolean-binary-tree/ Difficulty : Easy Status : Solved Time : 00:04:22 문제 설명 풀이 DFS로 간단히 접근하자.만약 현재 노드가 리프노드라면, 현재 노드값이 1인지의 boolean 값을 검사하여 반환하자.리프노드가 아니라면, 조건상 Full binary tree이므로 왼쪽과 오른쪽 서브트리가 반드시 존재한다. 왼쪽, 오른쪽 결과물을 현재 노드값에 따라 or 연산, 혹은 and 연산을 가하여 바로 반환하면 된다.비재귀로도 가능하겠지만 재귀면 역시 간단하게 풀린다. 풀이 코드(Python)# Definition for a binary tree node.# c..
2331. Evaluate Boolean Binary TreeProblem : https://leetcode.com/problems/evaluate-boolean-binary-tree/ Difficulty : Easy Status : Solved Time : 00:04:22 문제 설명 풀이 DFS로 간단히 접근하자.만약 현재 노드가 리프노드라면, 현재 노드값이 1인지의 boolean 값을 검사하여 반환하자.리프노드가 아니라면, 조건상 Full binary tree이므로 왼쪽과 오른쪽 서브트리가 반드시 존재한다. 왼쪽, 오른쪽 결과물을 현재 노드값에 따라 or 연산, 혹은 and 연산을 가하여 바로 반환하면 된다.비재귀로도 가능하겠지만 재귀면 역시 간단하게 풀린다. 풀이 코드(Python)# Definition for a binary tree node.# c..
2024.05.16 -
Problem : https://www.acmicpc.net/problem/19951 Difficulty : Gold 5 Status : Solved Time : 00:08:12 문제 설명 더보기2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연병장(운동장)의 흙을 옮기는 일을 주고 제대로 수행하지 못하면 징계를 내리려고 한다. 연병장은 일렬로 이어진 N개의 칸으로 이루어져 있으며 각 칸마다 높이를 가지고 있고, 첫 번째 칸부터 순서대로 1번, 2번, 3번, ..., N번 칸으로 명칭이 붙어있다. 조교들은 총 M명이 있으며, 각 조교들은 태상이에게 a번 칸부터 ..
[백준/19951] 태상이의 훈련소 생활 (Python)Problem : https://www.acmicpc.net/problem/19951 Difficulty : Gold 5 Status : Solved Time : 00:08:12 문제 설명 더보기2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연병장(운동장)의 흙을 옮기는 일을 주고 제대로 수행하지 못하면 징계를 내리려고 한다. 연병장은 일렬로 이어진 N개의 칸으로 이루어져 있으며 각 칸마다 높이를 가지고 있고, 첫 번째 칸부터 순서대로 1번, 2번, 3번, ..., N번 칸으로 명칭이 붙어있다. 조교들은 총 M명이 있으며, 각 조교들은 태상이에게 a번 칸부터 ..
2024.05.14 -
Problem : https://leetcode.com/problems/path-with-maximum-gold Difficulty : Medium Status : Solved Time : ??:??:?? 문제 설명 풀이 DFS로 풀이할 수 있는 문제. 총 grid 영역이 15 x 15이므로, 탐색을 통해 시간 내에 모든 경로를 테스트해 볼 수 있겠다. 풀이 코드 (Python)class Solution: dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] visited = [[]] n = 0 m = 0 def dfs(self, grid: List[List[int]], x : int, y : int, golds : int) -> int : ..
1219. Path with Maximum GoldProblem : https://leetcode.com/problems/path-with-maximum-gold Difficulty : Medium Status : Solved Time : ??:??:?? 문제 설명 풀이 DFS로 풀이할 수 있는 문제. 총 grid 영역이 15 x 15이므로, 탐색을 통해 시간 내에 모든 경로를 테스트해 볼 수 있겠다. 풀이 코드 (Python)class Solution: dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] visited = [[]] n = 0 m = 0 def dfs(self, grid: List[List[int]], x : int, y : int, golds : int) -> int : ..
2024.05.14 -
Problem : https://leetcode.com/problems/score-after-flipping-matrix/ Difficulty : Medium Status : Solved Time : ??:??:?? 문제 설명 풀이 비트마스킹은 너무 느렸다...! 좀 더 간결히, 그리고 문제의 본질을 꿰뚫어야 풀 수 있는 문제였다. 언뜻 보면 모든 경우의 수를 다 테스트해보아야 할 것 같지만, 함정이 있다. score는 이진법으로 계산되므로, 제일 높은 차수(0번째 column)가 모두 1인 경우가 그리디하게 가장 큰 값을 지니게 된다. 즉 column 0을 1로 세팅하도록 하자. 이제 column 1부터 순회를 시작하면 된다. 이 때, column 0이 원래 1인 경우는 row가 뒤집어진 경우이므로..
861. Score After Flipping MatrixProblem : https://leetcode.com/problems/score-after-flipping-matrix/ Difficulty : Medium Status : Solved Time : ??:??:?? 문제 설명 풀이 비트마스킹은 너무 느렸다...! 좀 더 간결히, 그리고 문제의 본질을 꿰뚫어야 풀 수 있는 문제였다. 언뜻 보면 모든 경우의 수를 다 테스트해보아야 할 것 같지만, 함정이 있다. score는 이진법으로 계산되므로, 제일 높은 차수(0번째 column)가 모두 1인 경우가 그리디하게 가장 큰 값을 지니게 된다. 즉 column 0을 1로 세팅하도록 하자. 이제 column 1부터 순회를 시작하면 된다. 이 때, column 0이 원래 1인 경우는 row가 뒤집어진 경우이므로..
2024.05.14