문제링크될 수 있는 정답을 height_list 로 만들고 heigt마다 문제에서 요구하는 정답이 맞는지 판별하고 아닐 시에 height_list의 인덱스 가짓수를 반으로 줄여가기 위하여 만들었는데, 아무대로 정답 판별식이 구린가부다,,판별식이 아닌 list sorti
문제 링크
문제링크0과 1이 반복되는 수열에서 암호에 해당하는 부분이 있는지를 판별하고 가져오는 문제이다.중요한건 처음에 0이 계속 반복되다가 암호가 등장하므로 몇번째 0에서부터가 암호의 시작인지를 알아야 했다.따라서 첫번째로 1이 오는 경우에는 암호의 2,3,4번째 자리가 일치
문제 링크평탄화라고 하여 정해진 숫자 만큼 배열의 가장 큰 수를 하나를 빼고 가장 작은 수 하나를 더해주는 방식으로, 시간이 지날 수록 배열의 요소들이 모두 같은 값을 가지거나 두개의 값만 1이 차이 나도록 해준다.이 문제를 풀기 위하여 우선 입력받은 배열을 Count
전체를 다 곱하고 0 이 아닌 경우에 값을 나눠주도록 하면 시간복잡도 0n으로 가능. 나눗셈을 안 사용하고 어떻게 풀 수 있을까?바로 각각 요소의 자신을 제외한 왼쪽 부분곱, 오른쪽 부분곱을 곱하는 것이다.
팰린드롬 문제이다.문자열 뒤집기는 s = s::-1와 같이 할 수 있고리스트 안에 있는 값들의 경우에는 s.reverse()메서드를 활용하여 뒤집을 수 있다. str은 reverse함수를 사용할 수 없다.이를 활용하여 문자열 속 팰린드롬을 모두 추출하고, 가장 큰 값을
https://leetcode.com/problems/reorder-data-in-log-files/매개변수가 필요하지 않은 함수는 람다식으로 inline형태로 적을 수 있다.이 문제에서는 digit log들은 정렬이 따로 필요없으므로, letter log만을
https://leetcode.com/problems/most-common-word/멍청하면 몸이 고생한다.처음 제출한 답안이다. paragraph리스트를 정리하기 위해서 무자겅 덤볐다. paragraph 스트링을 소문자화 하고, 각 글자마다 알파벳인 경우에
분명히 애너그램 문제는 이전에도 풀어본 적이 있는데도 돌아가는 방법을 사용하는 버릇은 여전히 못 고치는 것 같다. 같은 알파벳의 조합으로 이루어져 있는 단어들을 애너그램이라고 한다.eat, ate, tea 들이애너그램이다.첫번 째로 시도한 풀이이다.일일히 각 단어들을
이중for 문으로 인덱스를 접근하니 n^2의 시간복잡도가 들어 시간초과가 나는 듯 하다.참고로 이렇게 수정했을 때는 시간초과가 일어났는데 stack-1에 접근하는 것으로 시간복잡도가 꽤 많이 올라가는듯?
인덱스 탐색으로 열리는 괄호만 스택에 넣다가 해당하는 닫히는 괄호가 들어오면 그 때 열리는 괄호를 pop하는 형식, 매우 간단하니까 방법론을 좀 기억하자.
문제링크깊이 우선 탐색의 대표격인 순열 문제이다.DFS 함수를 돌려 깊이가 순열의 크기에 도달할 때까지 다시 DFS를 반복적으로 시행하도록 처리해준다.dfs(1,1)dfs(2,1, 2)dfs(3,1, 2, 3)dfs(2,1, 3)dfs(3,1, 3, 2)dfs(1,2)
순열 / 중복순열 / 조합 / 부분집합의 문제의 경우에는 어느정도 스스로 정형화가 되어가고 있는 듯 하다.https://www.acmicpc.net/problem/16938위의 문제는 각기 다르거나 같은 난이도를 가진 문제들을 각각 사용할지 말지를 결정한 다음
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V4A46AdIDFAWu먼저 영역을 두 개로 나누기 위해서 choose함수를 부르고 choose()에서는 정한 두개의
DP는 top-bottom, bottom-up 의 방식으로처음 진행되는 연산은 기록해 두고, 이미 진행했던 연산이라면 다시 연산하는 것이 아니라 기록되어 있는 값을 가져오는 방식으로 해결하는 알고리즘이다.https://www.acmicpc.net/problem
https://www.acmicpc.net/problem/14888연산자 목록이 주어지면 무작위의 순서로 숫자들 사이에 끼워넣었을 때 어떤 값이 가장 크고 작은지를 반환한다.문제를 보자마자 일단 완전탐색으로 경우의 수를 모두 받아야 겠다고 생각했다.그러므로 연
그림처럼 특정 영상(파란줄)이 주어지고 PIP 영상(검정줄)이 주어질 때 광고영상(빨간줄)을 어디 삽입해야 가장 영상들에 많이 겹칠 수 있는지를 푸는 문제였다.사실 개념은 굉장히 간단한 편인데 문자열로 <-> 시간 간의 변환, 시간을 배열로 저장하는것, 문제를 슬
드디어 이해해버렸다 유니온 파인드....https://www.acmicpc.net/problem/1976문제의 요점은 여행의 순서가 아니라 여행지들이 모두 이어져 있는지 이다.이어져만 있으면 어떤 지점을 경유해서 어떻게든 그 지점으로 갈 수 있기 때문이다.
https://www.acmicpc.net/problem/14466약 한달만에 풀이하는 문제라 그런지 굉장히굉장히 어려웠다.사실 일반적인 BFS 문제이므로 문제 자체를 이해하는 것만 된다면 크게 어려울 것이 없었다.하지만 c++이라는 언어의 변화, IDE 사용
모든 정점에서 모든 정점까지 도달할 수 있는 최솟값을 구하는 알고리즘이다. 방향 그래프, 무방향 그래프 모두에서 적용 가능하다.노드 -> 노드까지의 거리를 담는 2차원 배열이 있을 때,1부터 n까지의 노드들을 중간값으로 했을 때의 거리 최솟값을 갱신해주는 방식으로 3중
Kruskal 알고리즘은 간선들을 비용이 적은 순으로 모두 소팅한다음에,cycle이 없는 경우에 한정해서 연결하면서 최소신장트리를 완성해나가는 것이다.cycle이 없는 것을 판단하기 위해 기본적으로 union-find 작업을 잘 해야 한다.union-find를 할 때
문제 자체는 전혀 어려울 것 없는 무난한 수준의 문제이다.중요한건 정렬을 어떤 기준으로 하느냐 정렬 알고리즘을 틀리지 않고 짜느냐반례를 잘 잡느냐이 세가지일 것이다.C++에서의 정렬을 클래스나 구조체 선언부에서 operator <를 오버라이딩하는 방법,정렬 함수를
문제는 정말 간단히 링크들이 주어졌을 때, disjoint-set의 수를 출력하는 문제였다.원래의 union은 부모노드끼리만 비교해서 작은 값을 부모노드로 교체해주면 되지만,일반적으로 나는 자식노드도 최종부모로 바꿔준다. 이를 경로 압축이라고 흔히들 이야기한다.중요한