목록Algorithm (428)
Mini
https://leetcode.com/problems/unique-paths/description/* 완탐class Solution {public: int uniquePaths(int m, int n, int i = 0, int j = 0) { if(i >= m || j >= n) return 0; // reached out of bounds - invalid if(i == m-1 && j == n-1) return 1; // reached the destination - valid solution return uniquePaths(m, n, i..
if(v==1) v1.push(index)else remain 백터에 넣는다.remain벡터에 대해서 다시 while_permutation을 반복한다. ex) 0 0 0 0 1 1 (v)idx : 0 1 2 3 4 5 -> v1=[4,5]-> remain : 0 0 0 0 -> 0 0 1 1-> 조합돌림v2 : [2. 3]
 프로그래머스 상담원 인원 c++ // 우선순위큐, 중복조합(백트래킹)
      
      
        프로그래머스 상담원 인원 c++ // 우선순위큐, 중복조합(백트래킹)
        https://school.programmers.co.kr/learn/courses/30/lessons/214288 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 1. 의사코드i) 상담사 분배 경의의수 구현상담유형=5일때, 상담사=20명을 분배해야한다.이때, 최소 상담사는 1명씩 있어야한다. -> 15명을 5개칸에 분배해야한다[ 1 1 1 1 1] [ 0 0 0 0 0] 서로다른5자리에서 중복을포함해 15개를 고르면된다. ex) 첫째자리만 15번고르면 상담사가 [16 1 1 1 1]이 된다.중복조합의 구현은 st를두고, vis체크를 없애면 된다.모든 상담사..
 리트코드 3. 반복되는 문자가 없는 가장 긴 부분 문자열 c++ // 슬라이딩 윈도우
      
      
        리트코드 3. 반복되는 문자가 없는 가장 긴 부분 문자열 c++ // 슬라이딩 윈도우
        https://leetcode.com/problems/longest-substring-without-repeating-characters/description/* 의사코드1. map에 해당문자의 등장횟수기록2. 해당문자가 2회이상등장 -> 등장횟수가1이 될때까지 l을 우측으로 조정3. 모든 중복문자없는 부분문자열을 탐색하면서 그때의 최대값을 ret에 저장함* 전체코드class Solution {public: int lengthOfLongestSubstring(string s) { unordered_map m; //m[a]=2, a의 등장횟수가2임 int r=0,l=0,n=s.size(), ret=0; while(r1){ //2회이상인경우, 1회가되도록 조정해야함..
 리트코드 2. 두개의숫자추가 c++ // stoi 주의점, 노드 begin 저장방법, 두 링크드리스트 덧셈방법
      
      
        리트코드 2. 두개의숫자추가 c++ // stoi 주의점, 노드 begin 저장방법, 두 링크드리스트 덧셈방법
        https://leetcode.com/problems/add-two-numbers/description/ * stoi 주의점21억( 2,147,483,647 )== 문자열로 10자리만 벗어나도 out of range 가뜸-> stoll을 사용할것 ( 9,223,372,036,854,775,807)-한계 : 20자리이상은 불가능함.-> 숫자계산으로 구현해야함. 문자열꼼수 안통해 * 기존코드숫자를 문자열로 바꾸면서 덧셈하고해당 숫자를 다시 노드로 바꿈- 문제 : stoi 에서 stoll로 해도 ll의 범위도 벗어나버림/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * List..
 리트코드 57 삽입간격 c++ // 구현, 라인스위핑은 케이스 분류하라
      
      
        리트코드 57 삽입간격 c++ // 구현, 라인스위핑은 케이스 분류하라
        https://leetcode.com/problems/insert-interval/description/1. 의사코드이때, 핵심은 new를 탐색완료한것중 제일 우측의 간격으로 유지하는 점이다. 2. 전체코드class Solution {public: vector> insert(vector>& intervals, vector& newInterval) { vector> ret; //new에는 현재 탐색완료한 간격중 제일 우측의 간격이 들어있다. for(auto interval : intervals){ if(interval[1]시간복잡도 : O(N) 추정
https://level.goorm.io/exam/150257/00%EC%A6%9D%EA%B6%8C-%EC%A3%BC%EC%8B%9D%ED%88%AC%EC%9E%90%EC%9E%90-a/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io 1. 소수점 절사방법ex)5.41에서 1을 절사(버리기)하려면10을곱한후 floor 하면된다5.41 -> 54.1 -> 54 2. 소수점 비교방법직접비교 : | a- b| 10^n 을 곱해서 정수로 바꾼후 비교하는걸 추천함!값이 중요한게 아니라 대소만 보면되므로 정수로 바꿔서 == 비교가 정확한듯? 2.5 .로그값구하는법log2 함수를 쓰면된다.log 2 (10) 만 = 16 이다.// function..
https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/1. 의사코드우리는 보물인 0을 찾는것이다.[4 5 6 7 0 1 2]st m enmid>en이면, 보물이 우측에 있는것이다. -> st=mid+1[0 1 2]에서mid 0 en=mid; //mid-1아님[0 1]에서mid=0 보물이 좌측 -> en=0;en과 st가 0으로 수렴했고, 그곳이 보물이다! 2. 전체코드class Solution {public: int findMin(vector& nums) { int st=0,en=nums.size()-1; while(st
