본문 바로가기

알고리즘

(16)
[LEETCODE] Python3 🐍 | Easy Collections 추천문제 및 풀이 (2) Sorting&Searching, Dynamic Programming, Design, Math, Others https://leetcode.com/explore/interview/card/top-interview-questions-easy/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 일주일에 거쳐 푼 21문제에 대한 풀이 2탄 입니다. 카테고리 : Sorting&Searching, Dynamic Programming, Design, Math, Others..
Longest Substring Without Repeating Characters | LeetCode 779 | Python3 🐍 🤔 문제 : Longest Substring Without Repeating Characters | LeetCode 779 문제: https://leetcode.com/explore/interview/card/top-interview-questions-medium/103/array-and-strings/779/ 어떤 문자열이 주어졋을 때 그 문자열의 substring중에서 substring내에 중복된 character가 없고 길이가 가장 긴 substring 위 조건에 맞는 substring의 길이를 반환하는 문제입니다. 💡 풀이 1. 중복 character의 index를 기록하여 substring길이 계산 1. 주어진 문자열을 순회하며, 이전에 나온 character와 중복된 character가 있는지..
Longest Valid Parentheses | LeetCode 32 🤔 문제 : Longest Valid Parentheses | LeetCode 32 문제: https://leetcode.com/problems/longest-valid-parentheses/ 문제에서 말하는 Valid Parenntheses는 괄호가 열린만큼 잘 닫힌 형태의 문자열이다. () : valid )( : invalid (() :invalid ()) :invalid (()()) : valid텍스트 어떤 문자열이 주어졌을 때 그 안에서 가장 긴 valid parentheses의 길이를 찾는 문제이다. 💡 풀이 접근 - valid parentheses는? valid parentheses를 판단하는 방법으로는 문자열을 읽어나가며 stack에 ( 이 나오면 push, )이 나오면 pop을 하는 직관적..
Maximum Frequency Stack | LeetCode 895 🤔 문제 : Maximum Frequency Stack | LeetCode 895 문제 : https://leetcode.com/problems/maximum-frequency-stack/ 문제에서 만들고자 하는 Frequncy Stack은 기존 stack과 같은 구조를 같지만 pop 할 때 단순히 가장 위에 있는 원소가 아닌 가장 많이 들어있는 원소들 중 가장 위에 있는 원소를 반환함 => 각 원소가 몇 번 나왔는지를 효율적으로 count하고 caching할 방법이 필요함 💡 풀이 1. Pop할 때 Stack 내 모든 원소를 세어 가장 많이 나온 원소를 반환 처음에는 Time Limit Exceed 신경쓰지 않고, 가장 단순한 풀이로 풀어봅니다. push 는 기존 stack과 동일하고 pop 은 전체 ..
삼성 SW 역량테스트 기출 :: 퇴사 문제 링크 : https://www.acmicpc.net/problem/14501 난이도 : 하 /* * 퇴사 : https://www.acmicpc.net/problem/14501 */ #include #include #define FOR(i, n) for(int i = 0 ; i > n; FOR(i, n){ cin >> t[i]; cin >> p[i]; } mmax = INT32_MIN; } // i-1까지 수익이 prev일때, i번째 상담을 하거나 하지 않을 때의 수익 계산 void solve(int i, int pre..
삼성 SW 역량테스트 기출 :: 경사로 문제 링크 : https://www.acmicpc.net/problem/14890 난이도 : 하 /* * 경사로 https://www.acmicpc.net/problem/14890 * * 가로로 건널 수 있는지 확인하는 함수 하나를 만들고 * 보드를 회전시켜서 세로도 확인 */ #include #include #include #define FOR(i, n) for(int i = 0 ;i < n ; i ++) using namespace std; int n, l; int board[100][100]; int rotBoard[100][100]; bool occupied[100][100]; void rotate(){ FOR(i, n){ FOR(j, n){ rotBoard[i][j] = board[n-j-1][..
algospot :: BOARDCOVER2 게임판 덮기 2 문제 : https://algospot.com/judge/problem/read/BOARDCOVER2 알고리즘 문제 해결 전략 p.423 [알고리즘 STEP. 1] 일단, 입력받은 블록을 4방향으로 돌려서(0도, 90도, 180도, 270도) 미리 저장해 둔다. 저장 할 때는 왼쪽 가장 위의 인덱스를 0,0으로 두고 나머지를 상대 위치로 변환해서 pair 형태로 저장한다.(void generateRotations(vector block)) vector rotations; //roatations : block을 회전시켜 만든 4가지 블록을 pair의 벡터로 저장 void generateRotations(vector block){ //vector&block 아니고 그냥 복사 rotations.clear();..
algospot :: PACKING 여행 짐 싸기 문제 : https://algospot.com/judge/problem/read/PACKING 알고리즘 문제해결전략 1권 p.281 가능한 물건의 조합을 하나하나 검사해서, 정해진 무게 제한 안에서 최대 절박도를 내는 물건의 조합을 찾아내는 문제다. [내가 헤맨 부분] - 최대 절박도를 찾는것 까지는 동적 계획법으로 쉽게 떠올릴 수 있는데, 물건들의 이름을 출력하는 부분에서 막혔다. - memset함수를 잘못 이용해서 몇번이나 틀렸다. 값을 직접 계산해서 3번째 인자에 넣고 있었는데, 그냥 sizeof를 이용하는게 정확하다. memset(target, value, sizeof(target)) [알고리즘] * 물건들의 index를 동적계획법에 이용하면 문제가 간단해진다. * int play(int inde..