본문 바로가기

전체 글274

🐨BOJ#2669]직사각형 네 개의 합집합의 면적 구하기 def is_in_rect(current,start,end): x, y = current x1, y1 = start x2, y2 = end return x1 matrix = [[0 for _ in range(100)] for _ in range(100)]areas = [[int(x) for x in input().split()] for _ in range(4)]counter = 0for area in areas: x1, y1, x2, y2 = area for i in range(x1, x2): for j in range(y1, y2): matrix[i][j] = 1for i in range(0,100): counter += sum(ma.. 2024. 5. 1.
🐨BOJ#6131]완전제곱수(python) https://www.acmicpc.net/problem/6131 6131번: 완전 제곱수 상근이는 선영이와 함께 게임을 하고 있다. 먼저, 상근이는 두 양의 정수 A와 B를 고른다. (1 ≤ B ≤ A ≤ 500) 그 다음, 선영이는 상근이가 고른 수를 맞춰야 한다. 상근이는 선영이에게 다음과 같 www.acmicpc.net 가장 큰 제곱수는 직전의 제곱수보다 2n+1개 많다. 차이가 15 라면 8^2 =64 와 7^2=49를 뺀 것이 가장 크다 이 크기까지의 제곱수의 차이를 수열로 보면 3,5,7,9,11,13,15가 되는데 연속된 부분수열의 합이 15가 되게 하면 된다. 3,5,7과 15 투 포인터로 문제를 풀 수 있나? def find(arr, target_sum): start = 0 curren.. 2024. 4. 22.
🐨BOJ#14244]트리 만들기(Python) https://www.acmicpc.net/problem/14244 14244번: 트리 만들기 n과 m이 주어졌을 때, n개의 노드로 이루어져 있고, m개의 리프로 이루어져 있는 트리를 만드는 프로그램을 작성하시오. 항상 정답이 존재하는 경우만 입력으로 주어진다. 트리는 사이클이 없는 www.acmicpc.net 문제를 이해하기 위해 그래프를 그리는 곳에 입력해 예제 출력을 각각 넣어 보았다. 그림을 보면 리프는 무조건 2개 이상 생긴다. 그리고 루트를 어느 것으로 정하느냐에 따라 트리의 모양이 바뀔 수 있다. n, m = map(int,input().split()) cnt = 0 for i in range(n-1): print(cnt,i+1) if n-m>cnt: cnt+=1 n-m까지만 직선노드를 증.. 2024. 4. 21.
🐨BOJ#11725]트리의 부모 찾기 .Python https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 예제 1과 2를 트리로 만들어보면 위와 같다. 첨엔 그냥 딕셔너리에 트리 연결 정보를 단방향으로 넣었더니 아예 1번예제가 되지 않았다. 이렇게 양방향으로 넣고나서 엄청나게 비효율적인 탐색을 했더니 시간초과가 떴다. 트리를 돌면서 자식에 찾는 자식이 있을때까지 $n^2$으로 도는... from collections import defaultdict tree = defaultdict(list) for _ in range(int(input())-1): p, c = .. 2024. 4. 21.
파이썬🐍두 번째 원소를 기준으로 튜플 리스트 정렬하기. 튜플을 두 번째 원소를 기준으로 정렬하는 방법은 여러 가지가 있습니다. 파이썬에서는 주로 sorted() 함수를 사용하여 이 작업을 수행합니다. sorted() 함수는 정렬할 데이터와 정렬 기준을 설정할 수 있는 매개변수를 제공합니다. 튜플의 리스트가 주어졌을 때, 두 번째 원소를 기준으로 정렬하려면 다음과 같이 할 수 있습니다: 1. lambda 함수 사용하기 lambda 함수를 사용하여 정렬 기준을 설정할 수 있습니다. lambda 함수는 간단한 일회용 함수를 작성할 때 사용됩니다. sorted() 함수의 key 매개변수에 lambda 함수를 전달하여 튜플의 두 번째 원소를 반환하도록 합니다. tuples_list = [(1, 2), (3, 1), (5, 0), (4, 7)] sorted_tuples.. 2024. 4. 21.
🐨알고리즘]이진 트리 이진트리모든 노드가 최대 2개의 자식을 가질 수 있는 트리포화 이진 트리- 리프를 제외하고 모두 차수가 2완전 이진 트리- 잎 노드들이 트리의 왼쪽부터 차곡차곡 채워진 것높이 균형 트리- 루트 노드 기준으로 왼쪽과 오른쪽 하위 트리의 높이가 1 이상 차이나지 않는 것완전 높이 균형 트리- 루트 노드 기준으로 양 쪽의 트리의 높이가 같은 이진 트리이진 트리의 순회전위루트 노드부터 왼쪽 하위 트리 방문 후 끝나면 오른쪽 하위 트리 방문전위 순회를 사용하면 이진 트리를 중첩된 괄호로 나타낼 수 있음.중위왼쪽 하위트리에서 루트를 거쳐 오른쪽 하위트리, 대표적으로 수식 트리  후위왼쪽 하위 트리, 오른쪽 하위 트리, 루트 노드의 순서. 수식 트리를 후위 순회로 방문하면 $$1 2 * 7 8 - +$$의 후위 표기.. 2024. 4. 20.
🐨자료구조]트리 트리의 요소 Root 뿌리, Branch 가지, Leaf 잎. 실제로는 똑같은 노드임. 위치에 따라 명칭만 다름. 루트는 트리 자료구조의 가장 위 리프는 가장 끝에 있는 노드 그 사이는 가지. 노드의 관계 노드 B는 D, E의 Parent. D, E는 노드 B의 Children D, E는 서로 형제(Sibling) PATH 한 노드에서 다른 노드까지 가는 길 사이에 놓인 노드들의 순서. 길이(Length)속성을 가짐. 거쳐야 하는 노드 개수. B,E,L 경로의 길이는 2 깊이(Depth)는 루트에서 해당 노드까지의 경로 길이. 레벨(Level) 깊이가 같은 노드의 집합. 높이(Height)트리에서 가장 깊은 깊이 차수(Degree) 자식 노드의 개수. 트리의 표현법 중첩된 괄호 `A(B(D, E(K, L.. 2024. 4. 20.
트리 구현하기(C언어 구조체, 파이썬 클래스) 왼쪽 자식 오른쪽 형제(LCRS) 트리 구현하기 왼쪽 자식 오른쪽 형제(LCRS) 트리는 각 노드가 자신의 왼쪽 자식과 오른쪽 형제를 가리키는 포인터를 갖는 자료 구조입니다. 이 방식은 트리의 모든 노드를 연결리스트와 유사한 형식으로 저장할 수 있게 해주며, 특히 다중 자식을 가진 트리를 간단하게 표현할 수 있습니다. 노드 구조체 정의 먼저, 각 노드를 정의하는 구조체 LCRSNode를 생성합니다. 이 구조체는 자식 노드와 형제 노드를 가리키는 포인터, 그리고 데이터를 저장하는 필드를 포함합니다. typedef char ElementType; typedef struct tagLCRSNode { struct tagLCRSNode* LeftChild; struct tagLCRSNode* RightSiblin.. 2024. 4. 20.
헌내기는 친구가 필요해 2024. 4. 20.
이항 계수 https://ko.wikipedia.org/wiki/%EC%9D%B4%ED%95%AD_%EA%B3%84%EC%88%98 이항 계수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 이항 계수의 표를 파스칼의 삼각형이라고 한다. 조합론에서 이항 계수(二項係數, 영어: binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며 ko.wikipedia.org \[ \binom{n}{k} = \begin{cases} \frac{n!}{k!(n-k)!} & \text{if } 0 \leq k \leq n \\ 0 & \text{if } k n \end{cases}= {n \mathrm{C} k}= C(n, k) \] \[ (x + y)^n = \sum_{k=.. 2024. 4. 19.
suno]옷장 노래 생성 2024. 4. 18.
C 언어 고급편]🚀19 전처리와 분할 컴파일 전처리 지시자 소스파일→ 전처리된 소스파일 → 목적파일 → 실행파일 전처리기가 소프코드를 컴파일하기 좋게 다듬는 과정. #include 파일 포함. 컴파일러 설정 디렉터리에서 파일 찾음. “” 소스파일이 저장된 디렉터리에서 먼저 찾음. 사용자 정의 헤더. 프로젝트 디렉터리가 이닌 곳에서 찾으려면 경로면 포함. 이스케이프 필요 없음.(전처리기가 하는 일이라서 컴파일러처럼 할 필요 없음. 전처리기가 배치 파일이나 배시 스크립트가 간단한 명령을 처리하는 방식과 유사한 느낌이 있다.) students.h 헤더 파일에서 구조체 정의하고 main.c에서 #include “students.h”하면 헤더 파일 포함됨. 메인 함수 중간에서도 인클루드는 가능하지만…. 특별한 이유 없으면 하지 말 것 전처리 후에도 여전히 .. 2024. 4. 17.
🐨BOJ#1086]박성원\비트 필드 활용 다이나믹 프로그래밍 https://www.acmicpc.net/problem/1086 1086번: 박성원 첫째 줄에 정답을 기약분수 형태로 출력한다. p/q꼴로 출력하며, p는 분자, q는 분모이다. 정답이 0인 경우는 0/1로, 1인 경우는 1/1로 출력한다. www.acmicpc.net 2 초 128 MB 10482 3074 2089 26.813% 문제 서로 다른 정수로 이루어진 집합이 있다. 이 집합의 순열을 합치면 큰 정수 하나를 만들 수 있다. 예로, {5221, 40, 1, 58, 9}로 5221401589를 만들 수 있다. 합친 수가 정수 K로 나누어 떨어지는 순열을 구하는 프로그램을 작성하시오. 하지만, 박성원은 이 문제를 풀지 못했다. 따라서 박성원은 그냥 랜덤하게 순열 하나를 정답이라고 출력하려고 한다. .. 2024. 4. 17.
C 언어 고급편]🚀18 파일 입출력 목차 파일 개방과 입출력 파일 개방과 폐쇄 #include int main(void) { FILE *fp; fp = fopen("a.txt","r"); if (fp == NULL) { printf("파일이 열리지 않았습니다.\n"); return 1; } printf("파일이 열렸습니다.\n"); fclose(fp); return 0; } fopen 함수 원형 FILE *fopen(const char *, const char *); 기본 위치는 현재 디렉터리 == 실행 파일이 있는 위치 절대경로를 주고 싶다면 fopen(“c:\source\a.txt”, “r”) 백슬래시는 이스케이프를 위해 두 번씩 쓴다. 현재 작업 디랙터리를 기준으로 상대 경로 지정도 가능. "…"상위 폴더 개방 모드는 r,w,a 파일.. 2024. 4. 13.
C 언어 고급편]🚀17 사용자 정의 자료형 목차 구조체 # 선언 #변수 # 멤버 #변수의 대입 연산 사용자가 만들어 쓰는 자료형. 구조를 먼저 선언하고 써야 함. 배열은 같은 형태의 데이터만 묶음. 학번 이름 학점 등의 다양한 형식을 묶으려면 구조체 선언과 멤버 사용 변수 선언 전에 구조체 선언 #include struct student // 구조체 선언 { int num; // int형 멤버 double grade; // double형 멤버 }; // 세미콜론 사용 int main(void) { struct student s1; // struct student형의 변수 선언 s1.num = 2; // s1의 num 멤버에 2 저장 s1.grade = 2.7; // s1의 grade 멤버에 2.7 저장 printf("학번 : %d\n", s1.n.. 2024. 4. 12.
C 언어 고급편]🚀16 메모리 동적 할당 목차 동적 할당 함수 C언어에서 메모리 동적 할당은 프로그램 실행 중에 필요한 메모리 공간을 할당받는 것을 의미한다. 이는 프로그램의 유연성을 증가시키고, 필요한 만큼의 메모리만 사용할 수 있게 한다. malloc, free 함수 #include #include // malloc, free 함수 사용을 위한 헤더 파일 int main(void) { int* pi; // 동적 할당 영역을 연결할 포인터 선언 double* pd; pi = (int*)malloc(sizeof(int)); // 메모리 동적 할당 후 포인터 연결 if (pi == NULL) // 동적 할당에 실패하면 NULL 포인터 반환 { printf("# 메모리가 부족합니다.\n"); // 예외 상황 메시지 출력 exit(1); // 프로그.. 2024. 4. 12.
🐨BOJ#6549 히스토그램에서 가장 큰 직사각형] 모노톤 스택(#1725히스토그램) 히스토그램에서 가장 큰 직사각형 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 54258 14782 9717 26.945% 문제 히스토그램은 직사각형 여러 개가 아래쪽으로 정렬되어 있는 도형이다. 각 직사각형은 같은 너비를 가지고 있지만, 높이는 서로 다를 수도 있다. 예를 들어, 왼쪽 그림은 높이가 2, 1, 4, 5, 1, 3, 3이고 너비가 1인 직사각형으로 이루어진 히스토그램이다. 히스토그램에서 가장 넓이가 큰 직사각형을 구하는 프로그램을 작성하시오. 입력 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 $n$이 가장 처음으로 주어진다. $(1 ≤ n ≤ 100,000)$ 그 다음 $n$개의 정수 $h_1, ... 2024. 4. 10.
C 언어 고급편]🚀 응용 포인터 목차 이중 포인터와 배열 포인터 이중 포인터 개념 - 이중 포인터는 포인터의 주소를 저장하는 포인터로, **ptr과 같이 선언되며, 포인터의 포인터. #include int main(void) { int a = 10;// int형 변수의 선언과 초기화 int* pi;// 포인터 선언 int** ppi;// 이중 포인터 선언 pi = &a;// int형 변수의 주소를 저장한 포인터 ppi = π// 포인터의 주소를 저장한 이중 포인터 printf("----------------------------------------------------\n"); printf("변수 변숫값 &연산 *연산 **연산\n"); printf("-----------------------------------------------.. 2024. 4. 7.