본문 바로가기
728x90

전체 글240

[C++] 백준 1774번: 우주신과의 교감 https://www.acmicpc.net/problem/1774 1774번: 우주신과의 교감 (1,1) (3,1) (2,3) (4,3) 이렇게 우주신들과 황선자씨의 좌표가 주어졌고 1번하고 4번이 연결되어 있다. 그렇다면 1번하고 2번을 잇는 통로를 만들고 3번하고 4번을 잇는 통로를 만들면 신들과 선자씨끼 www.acmicpc.net 풀이 우선 최소 스패닝 트리 알고리즘이 사용되었고 이는 유니온-파인 알고리즘에 바탕을 둡니다. 다른 점으로는 클라스를 통해 트리 형태를 구현해 줍니다. 이와 함께 최소 스패닝 트리 구현을 진행해 줍니다. #include #include #include #include using namespace std; class edge { public: int node[2]; dou.. 2021. 8. 19.
[C++] 백준 1717번: 집합의 표현 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 풀이 유니온-파인 알고리즘의 기본문제로 배열을 정의하고 앞서 배운 유니온 파인 알고리즘의 함수를 가지고 풀이를 진행하였습니다. #include using namespace std; int parent[1000001]; //parent 찾기 int getParent(int parent[], int x) { if (parent[x] == x)return x; .. 2021. 8. 19.
[C++] 백준 1431번: 시리얼 번호 https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루 www.acmicpc.net 풀이 기초적인 정렬 문제로 문자를 비교하여 정렬하는 방식을 사용합니다. 이전에 진행한 알고리즘 라이브러리의 sort 함수를 사용하여 풀이를 진행합니다. #include #include #include using namespace std; int num(char k) { if (k == '0') return 0; if (k == '1') return 1; if (k == '2') retur.. 2021. 8. 19.
[C++] 백준 1197번: 최소 스패닝 트리 https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 풀이 최소 스패닝 트리(크루스칼 알고리즘)의 가장 기본적인 문제입니다. 유니온-파인 개념을 사용하여 사이클이 발생하지 않는 방향으로 모든 연결 간선들을 분석해 줍니다. #include #include #include using namespace std; class edge { public: int node[2]; int distance; edge(in.. 2021. 8. 19.
[C++] 백준 1181번: 단어 정렬 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 알고리즘 라이브러리에 있는 sort함수를 사용하여 해결합니다. sort함수의 특이 형태인 비교 인자 구분 함수를 사용하여 특별 케이스 정렬을 진행합니다. #include #include #include using namespace std; bool compare(string a, string b) { if (a.size() == b.size()) return a < b;// 문자열.. 2021. 8. 19.
[Python] FastAPI 학습 FastAPI란? 파이썬으로 만들어진 웹프레임워크입니다. 파이썬으로 만들어지 대표적인 웹프레임워크로는 Django(다른 언어에 비해서 장고는 속도가 느렸음)가 있습니다. 파이참(PyCharm)을 활용하여 FastAPI를 사용합니다. (백엔드 API를 개발하는데는 어떤걸 사용하더라도 무리가 없음) 메일도 보내주고 스케줄링을 해주는 서버를 만들어 볼 것입니다. notification-api 프로젝트를 만들어 사용하겠습니다. new project를 생성했다면 FastAPI 공식홈페이지(https://fastapi.tiangolo.com/)에 나와있는 것처럼 설치를 진행해 보겠습니다. mac기준 - 커맨드 + ,(콤마) Window기준 - Ctrl + Alt + S 위 단축키를 사용하여 Preferences 창.. 2021. 8. 12.
[C++] 10 - 클래스(Class) class 만드는 법 1) class name{ }; 2) private:, public: 영역 분할 3) member data 만들기 in private: 4) method 만들기 in public: 5) 초기화 함수(constructor, 생성자) - 생성자 이름은 class 이름과 동일->public - 만약 내가 생성를 만들지 않으면, default 생성자(Point(){})가 자동으로 생성 - 만약 내가 생성자를 만들면, default 생성자 자동 생성 안됨 - 장점 초기값과 형식을 지정할 수 있다. - default arguement 사용하면 default 생성자 굳이 필요 x class Point {//클라스 이름 설정 //2가지로 구성 -> 데이터와 함수 private: // 외부(main.. 2021. 8. 11.
[JAVA] 07 - 1 상속 용어정리 상속 : 부모 클래스의 필드와 메소드를 자식 클래스에서 사용할 수 있도록 한다. 메소드 재정의 : 부모 메소드를 자식 클래스에서 다시 정의하는 것을 의미 final 클래스 : final 클래스는 부모 클래스로 사용할 수 없다. final 메소드 : 자식 클래스에서 재정의할 수 없는 메소드 메서드 오버로딩 vs 메서드 오버라이딩 요소메서드 오버로딩 오버라이딩 선언 같은 클래스나 상속 관계에서 동일한 이름의 메서드 중복 작성 서브 클래스에서 슈퍼 클래스에 있는 메서드와 동일한 이름의 메서드 재작성 관계 동일한 클래스 내 혹은 상속 관계 상속 관계 목적 이름이 같은 여러 개의 메서드를 중복 작성하여 사용의 편리성 향상, 다형성 실현 슈퍼 클래스에 구현된 메서드를 무시하고 서브 클래스에 새로운 기능의 .. 2021. 8. 11.
[C++] 최소 스패닝 트리(크루스칼 알고리즘) 최소 스패닝 트리란? 트리는 N개의 정점이 N-1개의 간선으로 연결되어 있으면서 어느 두 노드를 잡아도 가지 못하는 경로가 존재하지 않습니다. 일반적으로 트리를 만들 때, 가중치를 고려하지 않고 트리를 구성합니다. 간선에 가중치가 존재하기 때문에 최소 스패닝 트리가 있는 것입니다. 최소 스패닝 트리는 간선을 N-1개의 간선을 뽑아내서 트리를 구성하면서, 뽑아낸 간선의 총 합이 제일 작아야합니다. ​ 최소 스패닝 트리의 주요 포인트 1) 우선 N개의 정점이 트리가 되어야한다. 2) 뽑은 간선의 총합이 제일 작아야한다. ​ 구현 1) 트리를 구성하기 위해서는 union-find 알고리즘의 union을 써서 쉽게 구현이 가능합니다. 2) 다음 뽑은 간선의 총합을 제일 작게 해기 위해서는 우선 간선을 오름차순 .. 2021. 8. 8.
728x90