목록Study/Algorithm (400)
hwooo
https://leetcode.com/problems/minimum-size-subarray-sum/풀이투포인터를 사용, end point를 증가하며 주어진 배열을 순회하며 부분합을 구한다.이 때 부분합이 target보다 커지면 start point를 증가시켜 target보다 큰 부분합의 최소 길이를 구한 후 최소 길이(minLen)를 갱신한다.코드class Solution {#define MAX_VAL 100001public: int minSubArrayLen(int target, vector& nums) { int minLen = MAX_VAL, size = nums.size(); int sum = 0, start = 0, end = 0; /..
https://leetcode.com/problems/valid-sudoku/description/풀이표를 순회하며 주어진 조건들을 만족하는지 확인한다.코드class Solution {public: bool isValidSudoku(vector>& board) { bool checkRow[10], checkCol[10]; bool checkBox[3][3][10] = {false, }; for (int i = 0; i
https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/description/풀이수의 범위가 int형의 범위이므로 수를 저장하는 방식으로는 풀지 못 하겠다고 판단했다. 현재 풍선의 범위와 다음 풍선들의 범위 중 겹치는 부분들만 남겨두어 하나의 화살로 터트릴 수 있는 풍선의 최대 개수를 구했다. 범위가 겹친다면 하나의 화살로 풍선을 터뜨릴 수 있으므로 둘 중 좁은 범위를 구해 겹치는 부분을 갱신하고, 다음 풍선의 범위를 탐색했다. +start 값은 없어도 됨코드class Solution {public: int findMinArrowShots(vector>& points) { // 오름차순으로 정렬 so..
https://school.programmers.co.kr/learn/courses/30/lessons/154539?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이주어진 배열의 뒤에서부터 탐색하며 스택에 값을 저장현재 인덱스의 값 이 때 스택이 비어있다면 현재 인덱스가 뒤를 탐색했을 때 가장 큰 값이므로 -1 저장코드#include #include #include using namespace std;vector solution(vector numbers) { int size = numbers.size(); vector a..
https://leetcode.com/problems/minimum-path-sum/description/풀이DP를 이용, (n, m)까지 도달하는데 최소값을 구했다.코드class Solution {public: int minPathSum(vector>& grid) { int m = grid.size(), n = grid[0].size(); // row[0] 증가 for (int j = 1; j
https://leetcode.com/problems/letter-combinations-of-a-phone-number/description풀이숫자당 할당된 문자열을 저장해둔 후, digits을 탐색하며 해당 숫자에 맞는 문자열을 찾았다.이를 현재 만들어진 문자열에 더하면서 가능한 가짓수의 조합을 모두 만든 후, digits의 길이와 같다면 해당 조합을 저장하는 식으로 구현했다.코드class Solution {public: vector ans; string nums[10] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; vector letterCombinations(string digits) { i..
https://leetcode.com/problems/integer-replacement/ 풀이풀이 1 : 문제에서 주어진 대로 실행하되, 이미 실행된 값을 set에 넣어 중복 탐색을 제거했다.풀이 2: 풀이 1이 너무 느려서 답을 봤고, 비트 연산으로 문제를 풀었다. 이 때 11과 10의 경우를 나눠 계산해야 하는 점을 유의해야 한다.코드 1class Solution {public: int integerReplacement(int n) { unordered_set u; queue > q; q.push({n, 0}); u.insert(n); while(q.size()) { long long num = q.front(..
https://leetcode.com/problems/snakes-and-ladders/description/ 풀이2차원 배열을 순회하며 주어진 순서대로 인덱싱해당 인덱스들을 돌며 출발 지점 ≠ 도착 지점인 지점들의 도착 지점 변경bfs 돌면서 가장 적은 도달 회수 찾기코드class Solution {private: #define MAX_SIZE 410 typedef pair pair_int;public: int snakesAndLadders(vector>& board) { int size = board.size(); int dst = size * size; queue q; // 배열 인덱싱 int r = size - 1,..