본문 바로가기

전체 글192

[Python] min, max 함수 min (max) 함수 파이썬에서는 여러 대상들(리스트 등) 중 가장 큰 값 또는 가장 작은 값을 구하는 함수가 있다. min, max 함수인데, 아래 방법을 사용하면 이런 함수들을 좀 더 잘(?) 활용할 수 있다. 함수 Parameter에 key=func 주기 list_num = [1, 2, 5, 4, 5, 5, 6, 7, 8, 1] print(max(list_num, key=list_num.count)) # count가 가장 많은 5가 출력 위 코드는 list_num.count를 list_num을 대상으로 실행하고, 해당 값들의 최대값을 출력한다. 따라서 list_num 내부에 가장 개수가 많은 5가 출력된다. 2022. 3. 10.
[서버] MariaDB 서버 구축 - 작성 중 목적 Maria DB를 구축하고 Sql 연습하는데 사용함 나중에 개발할 크롤러 및 RPA 봇과 연계하여 정보를 수집하고 REST API 서버를 통해 Post, Get 할 예정임 구성 OS : CentOS 7 Minimals DB : Maria DB 장비 : 남는 노트북 활용 서버 설치 서버 설정 시간 동기화 네트워크 설정 유저 생성 SSH 설치 및 설정 SELinux 해제 Firewall 해제 net-tools, iptables 설치 mariadb 설치 DB, User 생성 및 권한 부여 라즈베리파이와 다이렉트 연결 원격 접속 테스트 https://ksr930.tistory.com/42 centos, c++ MariaDB 연동 테스트 해보기 (Makefile) 회사에서 진행중인 프로젝트에서 오라클 DB .. 2022. 3. 9.
[알고리즘] 하노이의 탑 목적 하노이의 탑 알고리즘을 가시화하여 이해를 쉽게함 가시화된 알고리즘을 재귀 함수로 구현함 구현할 함수는 아래 2개임 ( A탑에 위치한 원반 개수는 N) int count_hanoi(int n) : A에서 C까지 N개의 원판을 이동시키는데 필요한 전체 개수 void hanoi(int n, int from, int to) : n번째 원판을 From에서 To로 이동시킴 탑 이동 알고리즘 (Hanoi Function) 하노이 탑의 이동을 재귀로 구현할 땐 아래 이미지의 이동 방식을 알면 됨 N이 2보다 더 큰 경우도 가장 밑에 있는 N번째 원판과 그위의 나머지 원판으로 부분을 나누면, 위와 같은 방식으로 이동이 가능함 hanoi(2, A, B)와 hanoi(2, B, C)의 이동을 직접 나열해보면 아래와 같.. 2022. 3. 9.
윈도우 원격제어 프로그램 1. 목적 및 구성 상대 PC에 제어 명령을 보내는 마스터 프로그램(이하 A)과 받은 명령을 수행할 슬레이브 프로그램 (이하 B)이 존재함 A는 B가 전송한 모니터 화면을 그려줄 인터페이스를 가지고 있으며, 해당 화면 내에서의 상호작용을 B에게 전달 B는 최초 실행 시 서버에 자동으로 연결을 시도하며, 연결 후 대상 pc의 화면과 정보를 A에게 전달함 이후 A에서 보내오는 명령을 수행함 (마우스, 키보드 입력, 단축키 요청 등) 2. 기능 자동 연결 모니터링 대상 정보 수집 원격 제어 3. 알고리즘 전역 후킹 키보드 마우스 이벤트 모듈 화면 캡쳐 및 코덱 인코딩 실시간 비동기 UDP 전송 json 파싱 트레이아이콘, DLL 로드 4. 오픈소스 FFMPEG OpenCV 2022. 3. 8.
[프로그래머스][SQL] 고득점 kit 프로그래머스 SQL 고득점 Kit Select : https://programmers.co.kr/learn/courses/30/parts/17042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 1. 모든 레코드 조회하기 SELECT * from animal_ins order by animal_id asc -- 2. 역순 정렬하기 SELECT Name, datetime from animal_ins order by animal_id desc -- 3. 아픈 동물 찾기 SELECT animal_id, name from animal_ins where in.. 2022. 3. 5.
[서버] Cent OS-7 설치 및 초기 설정 1. 구분 DVD ISO 파일 Everything ISO Minimal ISO 2. 네트워크 설정 vi /etc/sysconfig/network-scripts/ifcfg-enpXXX -> ONBOOT=YES, gateway, dns, ... systemctl restart network or service network-manager restart ip addr 3. 네트워크 관련 설치 yum -y install net-tools bind-tools nmap 4. 시간 동기화 yum -y install rdate rdate -s time.bora.net timedatectl set-ntp y date 4. 유저 생성 adduser -m -u 10001 hwan passwd hwan 5. ssh 설정 yu.. 2022. 3. 3.
[백준] 삼성 SW 역량 테스트 기출 문제 (작성중) 1. URL : https://www.acmicpc.net/workbook/view/1152 문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon) www.acmicpc.net 2. 문제풀이 구슬 탈출2 (골드1) 2048(Easy) (골드2) 뱀 (골드 5) 시험 감독(브론즈 2) #include #include #include using namespace std; int main() { double n, tmp, b, c, sum=0; double sub_supervisor; cin >> n; vector exam_room; for (int i = 1; i > tmp; exam_room.push_back(tmp); } cin >> b >> c; for (auto exam : exam_room).. 2022. 2. 22.
[라즈베리파이] 라즈비안 img 설치 (2022년 2월) 1. 개요 - 라즈베리파이 재설치를 위해 공식 홈페이지에 접속했지만 iso 파일이 아닌 RaspberryPi OS Imager(exe)를 제공 - 해당 툴을 사용하여 진행했지만 너무 느린 속도로 인해 설치가 제한됨 - 직접 이미지 파일을 다운로드하여 Rufus를 이용하여 설치하기로함 - 해당 방식으로 설치 시 ssh 활성화, wifi 연결 등의 작업을 미리해둘 수 없으므로, 별도의 인터페이스가 필요함 - 2020-02-13 버전 이후로 파일이 없음 (최신버전 필요 시 Imager 활용) - 공식 홈페이지(https://www.raspberrypi.com/software/raspberry-pi-desktop/)에서 설치 시 iso 파일 다운로드 가능 2. 라즈베리 파이 OS 이미지 파일 다운로드 라즈비안 .. 2022. 2. 20.
[백준] 단계별로 풀어보기 > 그리디 알고리즘 (c++) 문제 1. 동전 0 가장 금액이 큰 동전부터 개수를 세면서 k원에서 차감해줌 k가 0이되면 동전의 개수를 출력 #include #include using namespace std; int main() { int n, k, tmp; map m; map::reverse_iterator reiter; cin >> n >> k; for (int i = 0; i > tmp; m[tmp] = 0; } for(reiter = m.rbegin(); reiter != m.rend(); reiter++) { while (reiter->first first]++; k -= reiter->first; } if (k second > 0) { tmp += reiter->second; } } cout.. 2022. 2. 20.
[백준] 단계별로 풀어보기 > 동적 계획법 1 (c++) 문제 1. 피보나치 함수 피보나치 f(n) 이 몇개의 f(0)과 f(1)로 이루어 져 있는지 출력하는 문제 점화식(?) { f(i).first, f(i).second } = { f(i-1).first+f(i-2).first, f(i-1).second+f(i-2).second } 을 찾음 #include #include #include using namespace std; int main() { int test_case; cin >> test_case; vector f; f.push_back({ 1, 0 }); f.push_back({ 0, 1 }); for (int i = 2; i > n[i]; cout 2022. 2. 16.
[프로그래머스][Lv.3][Cpp] 네트워크 1. 문제 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 2. 접근 방식 입력 받은 인접 행렬에 몇개의 그래프가 존재하는지를 묻는 문제 BFS를 수행 후에도 방문하지 않은 노드가 남아 있다면 다른 그래프가 존재한다고 판단함 (방문하지 않은 노드가 없을 때까지 반복하여 탐색) 인접 행렬 형식의 2차원 Vector를 인접리스트 형식으로 변경 후 BFS 수행 3. 코드 #include #include #in.. 2022. 2. 6.
[프로그래머스][Lv.2][Python] 타겟 넘버 1. 문제 (레벨 2) https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 2. 접근 방식 BFS/ DFS 카테고리에 있는 문제지만, 해당 탐색 알고리즘으로 해결할 방법이 떠오르지 않아 완전탐색으로 구현 +, - 부호를 이진수로 표현하여 모든 경우에 대해 연산한 뒤 개수를 카운팅함 통과는 했지만 메모리와 시간에 제한이 있다면 실패할 듯 함 3. 코드 def solution(numbers, .. 2022. 2. 6.
[백준] 단계별로 풀어보기 > DFS와 BFS (c++) 문제 1. DFS와 BFS #include #include #include #include #include using namespace std; void func_1260_dfs_recursion(int n, vector * graph, bool* visited) { visited[n] = true; cout > start_node; vector *graph = new vector[n+1]; bool *visited = new bool[n+1]; memset(visited, 0, sizeof(bool) * (n+1)); for (int i = 0; i > u >> v; graph[u].push_back(v); graph[v].push_back(u); } for (int i .. 2022. 2. 5.
[알고리즘] DFS/ BFS 목적 탐색 알고리즘에서 사용되는 표현 방식을 이해하고 직접 구현 탐색 알고리즘인 DFS(Depth First Search, 깊이 우선 탐색) 알고리즘에 대해 이해하고 직접 구현 탐색 알고리즘인 BFS(Breadth First Search, 너비 우선 탐색) 알고리즘에 대해 이해하고 직접 구현 인접리스트와 인접 행렬 위 와 같은 그래프가 있을 때, 이 그래프를 표현하는 방식은 크게 2가지(인접리스트, 인접행렬)가 있다. 각 표현 방식을 구현해보면 다음 코드와 같다. 1) 간선을 인접리스트로 변환 #include #include #include #include using namespace std; // 만들어진 그래프를 출력 void print_adjacency_list(map graph) { for (au.. 2022. 2. 5.
[WPF] OpenCvSharp4로 윈도우 안에 카메라 영상 그리기 1. 목적 WPF에서 OpenCV를 활용하여 기본 WPF 컨트롤인 Image에 노트북 (또는 USB) 카메라에서 가져온 영상을 Bitmap 형식으로 그려줌 환경 구축 및 빌드는 https://hwan001.tistory.com/144?category=836235 링크 참조 2. 코드 (Xaml) 3. 코드 (C#) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu.. 2022. 2. 2.
[WPF] OpenCVSharp 4 Nuget 설치 1. 설치 목적 WPF에서 OpenCV 최신 버전(2022년 2월 2일 기준) 기능 사용 2. 주의점 OpenCVSharp4는 여러개의 Nuget으로 나워져 있음 한 개라도 없으면 함수 또는 자료형의 일부를 찾을 수 없음 3. 설치 (Nuget Package Manager) - WPF 환경에서 사용하기 위해 초록색 박스 부분 (OpenCvSharp4, OpenCvSharp4.runtime.win, OpenCvSharp4.WpfExtentions) 설치 - 윈도우 환경이라면 빨간색 박스 부분 설치가 더 간편함 (OpenVcSharp4.Windows) 4. OpenVcSharp4.Windows (빨간 박스) 설치 완료 2022. 2. 2.
[백준] 단계별로 풀어보기 > 정렬 (c++) 문제 1. 수 정렬하기 (브론즈 1) vector로 입력 받아 sort로 정렬 #include #include #include using namespace std; int main() { int a, num; vector v; cin >> a; for (int i = 0; i > num; v.push_back(num); } sort(v.begin(), v.end()); for (int i = 0; i > num; v.push_back(num); } sort(v.begin(), v.end()); for (int i = 0; i < v.size(); i++) { cou.. 2022. 1. 30.
[백준] 1011번 - Fly me to the Alpha Centauri (골드 5) 1. 문제 https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 2. 코드 #include #include using namespace std; typedef unsigned long long ll; int main() { int int_case; ll x, y, res,distance, level; cin >> int_case; for (int i = 0; i .. 2022. 1. 29.
[백준] 단계별로 풀어보기 > 브루트포스 (c++) 문제 1. 블랙잭 (브론즈 2) #include using namespace std; int main(){ int n, m, sum, min, res = 0; cin >> n >> m; int* card = new int[n]; bool is_flag; for (int i = 0; i > card[i]; } sum = 0; min = m; is_flag = true; for (int i = 0; i < n - 1 && is_flag; i++) { for (int j = i + 1; j < n && is_flag; j++) { for (int k = j + 1; k < n && is_flag; k++) { sum = card[i] + card[j] + card[k]; if (.. 2022. 1. 26.
[백준] 15965번 - K번째 소수 (실버 2) 1. 문제 https://www.acmicpc.net/problem/15965 15965번: K번째 소수 자연수 K가 주어진다.(1 ≤ K ≤ 500,000) www.acmicpc.net 2. 코드 #include #include using namespace std; bool *Sieve_of_Eratosthenes(int m) { bool* arr = new bool[m + 1]; memset(arr, 1, sizeof(bool) * (m+1)); arr[0] = false; arr[0] = false; for (int i = 2; i < m + 1; i++) { if (arr[i] == true) { for (int j = i * 2; j < m + 1; j += i) { arr[j] = false;.. 2022. 1. 25.