본문 바로가기
우선순위큐 priority_queue, greater> pq(scoville.begin(), scoville.end()); 기본적으로 최대힙, greater을 이용해서 최소힙으로 구성 가능priority_queue> pq(벡터.begin(), 벡터.end()); 내일 코테 제발... 2024. 10. 1.
라즈베리파이 opencv 이미지와 텍스트를 5초간 띄우는 코드#include #include #include #include #include using namespace cv;int main(){ Mat img; img = imread("/home/pi/opencv/image/buddha.jpg"); putText(img, "Hello bird!",Point(60,50),FONT_HERSHEY_SIMPLEX,1,Scalar(255,0,0),1,LINE_AA,false); rectangle(img, Rect(30,25,350,30), Scalar(0,0,255)); namedWindow("Hello"); imshow("hello", img); waitKey(5000); return 0;}.. 2024. 10. 1.
프로그래머스 폰켓몬(해쉬) https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 1~200000까지 번호가 잇는 n개의 폰켓몬이 들어올때 n/2개를 고르고, 해당 폰켓몬의 종류를 구하는 문제 첨엔 맵에 넣고.. 맵을 순회하면서 구해야되나 하다가그냥 set에 박아서 종류 구한 다음 생각해보면 n/2가 set보다 크거나 같은 경우 -> set에 있는거 다 하나씩 넣고 중복해서 더넣어야됨, 최대 종류는 set의 크기n이 set 보다 작은경우 -> n/2 종류.. 2024. 9. 30.
백준 2910 빈도정렬(map, vector) 문제위대한 해커 창영이는 모든 암호를 깨는 방법을 발견했다. 그 방법은 빈도를 조사하는 것이다.창영이는 말할 수 없는 방법을 이용해서 현우가 강산이에게 보내는 메시지를 획득했다. 이 메시지는 숫자 N개로 이루어진 수열이고, 숫자는 모두 C보다 작거나 같다. 창영이는 이 숫자를 자주 등장하는 빈도순대로 정렬하려고 한다.만약, 수열의 두 수 X와 Y가 있을 때, X가 Y보다 수열에서 많이 등장하는 경우에는 X가 Y보다 앞에 있어야 한다. 만약, 등장하는 횟수가 같다면, 먼저 나온 것이 앞에 있어야 한다.이렇게 정렬하는 방법을 빈도 정렬이라고 한다.수열이 주어졌을 때, 빈도 정렬을 하는 프로그램을 작성하시오.입력첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000.. 2024. 9. 29.
백준 1992 쿼드트리(재귀) 문제흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다.주어진 영상이 모두 0으로만 되어 있으면 압축 결과는 "0"이 되고, 모두 1로만 되어 있으면 압축 결과는 "1"이 된다. 만약 0과 1이 섞여 있으면 전체를 한 번에 나타내지를 못하고, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하게 되며, 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지며, 이 영상을 쿼드 .. 2024. 9. 29.
백준 1629 곱셈(모듈러, 재귀) #include #include using namespace std;typedef long long ll;ll a,b,c;ll go(ll a, ll b) { if (b == 1) return a % c; ll ret = go(a, b / 2); // 2의 5승을 2의2승 * 2의 2승 * 2로 바꾸는 연산 ret = (ret * ret) % c; // 곱해준 걸 모듈러 연산 // 홀수인 경우에는 a를 한번 더 곱해주는 연산 if(b%2 != 0)ret = (ret * a) % c; return ret;}int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> a >> b >>.. 2024. 9. 27.
0927 라즈베리파이 GPIO wiringpi 설치wget \https://github.com/WiringPi/WiringPi/releases/download/3.10/wiringpi_3.10_arm64.debsudo apt install ./wiringpi_3.10_arm64.debsudo apt install wiringpigpio 18번 끄고키기gpio -g mode 18 outgpio -g write 18 0gpio -g write 18 1 깜빡이게 만들기 #include #include #include int ledcontrol(int gpio){ int i; pinMode(gpio, OUTPUT); for (int i = 0; i  pwm으로 밝기 천천히 밝아지게 조절#include #include #inc.. 2024. 9. 27.
윈폼 CRUD mssql에 기존에 만들어둔 test 스키마에 books 테이블 추가하고 책 데이터 넣어주기CREATE TABLE BOOKS ( BOOKNO int PRIMARY KEY, NAME varchar(50), CODE varchar(50) ); INSERT INTO BOOKS (BOOKNO, NAME, CODE)VALUES (1, '아기돼지3형제', '111111');INSERT INTO BOOKS (BOOKNO, NAME, CODE)VALUES (2, '톰과제리', '111112');INSERT INTO BOOKS (BOOKNO, NAME, CODE)VALUES (3, '인어공주', '111113');INSERT INTO .. 2024. 9. 25.
mssql 윈폼 연동 mssql 설치 후 데이터베이스에 새 데이터베이스를 추가한다 • db 연결 데이터베이스에 우클릭해서 새 데이터베이스를 만들어주고 .cs 파일에서 sqlconnection으로 mssql에 접속한다  //db연동을 위한 클래스 private SqlConnection sqlConnection = null; //ip, 포트, db이름, id, pw 순으로 connectionstring에 삽입 private string connectionString ="SERVER=127.0.0.1,1433;DATABASE=test;UID=sa;PASSWORD=1111";  private void btn1_Click(object sender, EventArgs e) .. 2024. 9. 25.
백준 3986 (스택) 문제이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 깨고 말았다. 안타깝게도 자는 동안 키보드가 잘못 눌려서 보고서의 모든 글자가 A와 B로 바뀌어 버렸다! 그래서 평석이는 보고서 작성을 때려치우고 보고서에서 '좋은 단어'나 세보기로 마음 먹었다.평석이는 단어 위로 아치형 곡선을 그어 같은 글자끼리(A는 A끼리, B는 B끼리) 쌍을 짓기로 하였다. 만약 선끼리 교차하지 않으면서 각 글자를 정확히 한 개의 다른 위치에 있는 같은 글자와 짝 지을수 있다면, 그 단어는 '좋은 단어'이다. 평석이가 '좋은 단어' 개수를 세는 것을 도와주자.입력첫째 줄에 단어의 수 N이 주어진다.. 2024. 9. 23.
팰린드롬 만들기(구현?) 문제임한수와 임문빈은 서로 사랑하는 사이이다.임한수는 세상에서 팰린드롬인 문자열을 너무 좋아하기 때문에, 둘의 백일을 기념해서 임문빈은 팰린드롬을 선물해주려고 한다.임문빈은 임한수의 영어 이름으로 팰린드롬을 만들려고 하는데, 임한수의 영어 이름의 알파벳 순서를 적절히 바꿔서 팰린드롬을 만들려고 한다.임문빈을 도와 임한수의 영어 이름을 팰린드롬으로 바꾸는 프로그램을 작성하시오.입력첫째 줄에 임한수의 영어 이름이 있다. 알파벳 대문자로만 된 최대 50글자이다.출력첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.예제 입력 1 복사AABB예제 출력 1 복사ABBA예제 입력 2 복사AAABB예제 출력 .. 2024. 9. 22.
백준 9375 (경우의 수, map) 문제해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까?입력첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다.각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다.다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나만 입을 수 있다.모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가진 의상은 존재하지 않.. 2024. 9. 22.
사용자 정의 컨트롤러 프로젝트에 사용자 정의 컨트롤을 추가 추가한 도구 상자에서 원하는 위젯을 가져다가 넣어두고 빌드하면윈폼창의 도구상자에서 만들어둔 컨트롤을 가져다가 사용 가능하다 이런 식으로 만들어 둔 걸 윈폼에서 사용자 정의 컨트롤을 가져와서 사용하려고 할때 접근 지정자 문제로 바로 컨트롤의 위젯에 접근은 불가능하다유저 컨트롤러에서 프로퍼티로 접근할 수 있게 해주자 public string label1text { get { return label1.Text; } set { label1.Text = value; } .. 2024. 9. 21.
단일 프로세스 멀티 프로세스 안하고 단일 프로세스 하는 이유 같은 프로그램 여러개 띄워서 충돌하거나 사용하는 사람이 작업중인 프로그램이 뭔지 햇갈려서 실수하는걸 방지 • Mutex 공유 자원을 한 프로세스가 단독으로 사용 가능하게 만들기 위해 뮤텍스를 사용Program.cs 의 실행 부분에 뮤텍스를 설정해 프로그램을 한개만 실행 가능하게 하는 코드 bool mutexLock = false; Mutex mutex = new Mutex(true, Assembly.GetEntryAssembly().FullName, out mutexLock); //이미 동일 프로세스가 생성되어있는지 체크하고 없을때만 새 프로세스 생성 if (mutexLock ==.. 2024. 9. 21.
이벤트 지금까지 ui배치 후 더블클릭 등으로 이벤트를 등록해서 사용했는데어떻게 이렇게 한 것 만으로 되는지 자세하게 알아보자 버튼의 클릭 이벤트를 처리할때 click 속성은 이벤트 핸들러 이고, 이벤트 핸들러는 델리게이트 타입이다.그러므로 델리게이트 문법을 사용해서 해당 동작을 할때 발생시킬 메서드를 등록할 수 있다 기존 델리게이트 문법보다 훨씬 편하게클릭 동작할때 얘도 실행해줘 하는 형태로 전달해주면 아래와 같은 경우에는 btn1이 뜬 후 확인하면 clicked2도 팝업된다 - 이벤트 핸들러 원형void 타입이기에 전달해주는 메서드 또한 void 타입으로 전달해줘야 한다.. 그렇지 않으면 당연히 빨간줄뜸public delegate void EventHandler(object sender, EventArgs e.. 2024. 9. 21.
윈폼 datatable, dataset, datagridview • datatable 사용datagridview 안에 데이터테이블을 넣어서 표현해보자form에 datagridview를 만들어서 넣어두고 폼이 초기화될때 데이터테이블이 들어가게 하는 방식private void Form1_Load(object sender, EventArgs e){ DataTable dt = new DataTable(); DataColumn dc = new DataColumn(); dc.ColumnName = "int"; dc.DataType = typeof(Int32); DataColumn dc2 = new DataColumn(); dc2.ColumnName = "name"; dc2.DataType = typeof(string); dt.Colum.. 2024. 9. 21.
윈폼 시작하기 2 (판넬, 스플리터, 테이블 레이아웃 판넬, 툴스트립) • toolstrip 이미지 있는 버튼이나 다양한 UI을 추가, 당연히 추가한 버튼 등에 이벤트 등록 가능  • panel & spliterspliter를 panel과 함께 사용해서 작업 영역을 구분할때 사용속성에서 dock 속성을 이용해서 어디를 구분할지 설정패널도 패널 속성의 dock을 이용해서 배치해서 작업영역을 설정하고 스플리터로 경계면을 설정하는걸로 이해했다 •  table layout panel   테이블 레이아웃 우상단 버튼을 눌러서 행/열의 크기나 갯수를 변경 가능하다테이블 안에 있는 오브젝트들은 columnspan속성과 rowspan 속성을 이용해서 몇 칸을 차지할건지 설정 가능하다 2024. 9. 21.
백준 1620 (map) 문제 오박사 : 그럼 다솜아 이제 진정한 포켓몬 마스터가 되기 위해 도감을 완성시키도록 하여라. 일단 네가 현재 가지고 있는 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 보면 포켓몬의 이름을 말하는 연습을 하도록 하여라. 나의 시험을 통과하면, 내가 새로 만든 도감을 주도록 하겠네.입력첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어.둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어와. 포.. 2024. 9. 21.
윈폼 시작하기 (이벤트, MDI, 로그인) 윈폼을 하는 이유유니티로 하는 프로젝트를 몇번 해보면서 닷넷.. C#.. 해볼까? 라는 생각을 하게 되었고기존에 해본 QT와 같은 GUI 기반에 웹 개발, 스마트팩토리나 iot 분야 등 다양한 분야로 사용 할 수 있는 프레임워크라 생각해 기술스택 확장, 직업선택의 폭을 넓히기 위해 윈폼을 공부해보자!복습을 위해 기록해두면 미래의 내가 보고 복습할거라 믿는다 비주얼 스튜디오에서 윈폼 으로 프로젝트 만들어서 시작윈폼 창에서 도구 상자에서 오브젝트 가져다가, 해당 오브젝트(버튼,라벨) 속성에 보이는 이벤트를 코드로 정의해서발생시킬 수 있다  button1.Click += MyButton_Click; private void MyButton_Click(object sender, EventArgs e).. 2024. 9. 21.
tcp 채팅 프로그램 1. 사용하려는 서버 측에 mysql을 설치.. 하려고 했으나 라파이에서 mysql이 설치 불가능해 mariadb 설치sudo apt-get install libmariadb-dev 2. 컴파일 할때 MySQL 클라이언트 라이브러리 사용을 명시라파이 컴파일aarch64-linux-gnu-gcc -o tcpServer tcpServer.c -I/usr/include/mariadb -L/usr/lib/aarch64-linux-gnu -lmariadb gcc -o server tcpServer.c -lmysqlclient  3. 테이블 구조CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY, client_socket INT, text VARC.. 2024. 9. 13.