본문 바로가기

Algorithm

[백준] 휴대폰 자판 5670번 C++ https://www.acmicpc.net/problem/5670 5670번: 휴대폰 자판 휴대폰에서 길이가 P인 영단어를 입력하려면 버튼을 P번 눌러야 한다. 그러나 시스템프로그래밍 연구실에 근무하는 승혁연구원은 사전을 사용해 이 입력을 더 빨리 할 수 있는 자판 모듈을 개발 www.acmicpc.net 메모리 초과 코드 (접은글) 더보기 #include #pragma warning(disable:4996) using namespace std; const int ALPHABET_SIZE = 26; struct Trie { bool isEnd; int childCnt; Trie *child[ALPHABET_SIZE] = {}; Trie() { isEnd = false; childCnt = 0; for (.. 더보기
[프로그래머스] 도넛과 막대 그래프 https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include // 도넛과 막대 그래프 // https://school.programmers.co.kr/learn/courses/30/lessons/258711 #define MAX 1000001 // #define INF 1e9 using namespace std; bool visited[MAX] = { false, }; // 사용한 정점들 v.. 더보기
[프로그래머스] 등산코스 정하기 https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include // https://school.programmers.co.kr/learn/courses/30/lessons/118669 #define MAX 50001 #define INF 1e9 using namespace std; typedef pair pii; vector graph(MAX); // { from, to, intensity }.. 더보기
구름톤 챌린지 2st Week (2) 2주차 4번째 문제 - 폭탄 구현하기(2) #include #include #include #include #include using namespace std; int main() { int N, K; cin >> N >> K; cin.ignore(); set at; set sharp; vector result(N, vector(N, 0)); vector ground(4); string ss; string sss; for (int i = 0; i > sss) { if (sss == "@") at.insert({ i,j }); else if(sss == "#") sharp.. 더보기
구름톤 챌린지 1st Week (2) 1주차 금요일(5번째) 문제이다. #include #include #include #include #include using namespace std; int countTwoAtBinary(int d) { //string result; int dd = d; int cnt = 0; while (dd > 0) { if (dd % 2 == 1) { //result.insert(0, "1"); cnt++; } //else //result.insert(0,"0"); dd /= 2; } return cnt; // 9 == 1001_2 } bool compare(vector a, vector b) { if (a[1] > b[1]) return true; else if (a[1] == b[1]) { if (a[0] >.. 더보기
구름톤 챌린지 1st Week (1) 8월 14일부터 9월 10일까지 9oorm에서 4주 동안 내주는 알고리즘 문제를 푸는 챌린지가 열렸다. 첫 문제는 아래와 같다. #include #include using namespace std; int main() { int W, R; cin >> W >> R; cout 더보기
[백준] 최소 스패닝 트리 1197번 - Python 문제 그래프가 주어졌을 때, 그 그래프의 최소 스패닝 트리를 구하는 프로그램을 작성하시오. 최소 스패닝 트리는, 주어진 그래프의 모든 정점들을 연결하는 부분 그래프 중에서 그 가중치의 합이 최소인 트리를 말한다. 입력 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 가중치 C인 간선으로 연결되어 있다는 의미이다. C는 음수일 수도 있으며, 절댓값이 1,000,000을 넘지 않는다. 그래프의 정점은 1번부터 V번까지 번호가 매겨져 있고, 임의의 두 정점 사이에 경로가 있다. 최소 스패닝 트리의 가중치가 -2,147,483,.. 더보기
[백준] 카드 정렬하기 1715번 - Python https://www.acmicpc.net/problem/1715 문제 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비.. 더보기