분류 전체보기215 스택(2)-동적 배열 스택 - 이전까지는 컴파일 시 크기가 결정되는 정적 할당 사용- 필요한 스택의 크기를 미리 알아야 함 → 곤란- C언어에서는 malloc()을 호출하여 실행 시간에 메모리를 할당받을 수 있음- 필요할 때마다 스택 크기를 늘릴 수 있음typedef int element;typedef struct{ element* data; int capacity; //현재 크기 int top;}StackType;- 동적 메모리 할당을 이용하는 스택 코드//스택 생성 함수void init_stack(StackType* s) { s->top = -1; s->capacity = 1; s->data = (element*)malloc(s->capacity * sizeof(element));}//스택 삭제 함수void dele.. 2024. 7. 8. 스택(1) 스택- 후입선출(LIFO: Last In First Out)의 입출력 구조- 스택에서의 입출력은 맨 위에서만 일어나고 스택의 중간에서는 데이터를 삭제할 수 없음- 자료의 출력 순서가 입력 순서의 역순으로 이루어져야 할 때 사용(ex: undo 기능)스택 상단(stack top): 입출력이 이루어지는 부분스택 하단(stack bottom): 반대쪽인 바닥 부분요소(element): 스택에 저장되는 값공백 스택(empty stack): 요소가 하나도 없는 스택추상 자료형 스택- push 연산: 스택에 요소 삽입- pop 연산: 스택에서 요소 삭제 - is_empty 연산: 스택이 공백 상태에 있는지 검사- is_full 연산: 스택이 포화 상태에 있는지 검사- create 연산: 스택 생성- peek 연산:.. 2024. 7. 8. 백준 2798: 블랙잭(java/C) 문제 풀이3중 for문을 사용하여(카드 3장을 고르므로 3중, n장 뽑으려면 n중첩) N개의 카드에서 가능한 모든 경우의 수를 탐색하면 된다. 전체 탐색을 하려니 N이 커질수록 너무 비효율적일 것 같았지만... 고민해 봐도 다른 방법은 잘 모르겠다ㅜ 1. 전체 경우의 수를 탐색하고2. 이들 중 합이 M에 가장 가까운 것을 출력 하는 간단한 알고리즘이다. [JAVA]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOEx.. 2024. 7. 6. 백준 30802: 웰컴 키트(java/C) 문제참가자: NS, M, L, XL, XXL, XXXL: 사이즈 별 신청자 수(한 명이 한 사이즈만 주문 가능)T: 셔츠 한 묶음에 몇 벌 들어가는지P: 펜 한 묶음에 몇 자루 들어가는지설명이 개인적으로 뭔가? 이해가 안 돼서 다시 적었다.티셔츠와 펜의 묶음 수 T와 P라고 하면 보통 n개짜리 T묶음, m개짜리 P묶음이라고 생각했는데내가 멍청한 걸지도... 풀이 한 묶음에 T벌씩 총 셔츠 n벌을 구매하려면1. n÷T묶음을 구매하고2. n÷T의 나머지에 대해서도 한 묶음을 더 구매해야 한다(한 묶음에 10벌씩 31벌을 구매한다 치면 총 4묶음을 구매하고 마지막 한 묶음에서 한 벌을 꺼내서 따로 줘야 하니까)int shirt = 0; //셔츠 묶음 개수for (int i = 0; i 펜은 인원수랑 똑같이 .. 2024. 7. 6. 백준 11050: 이항 계수 1(java/C) 문제 풀이 이항 계수는 주어진 집합에서 주어진 개수만큼 순서 없이 뽑는 조합의 가짓수를 말한다.이항 정리로 전개했을 때 계수 어쩌고... 라고 뜰 텐데 그냥 고등학생 때 확통 순열 조합 하면서 배운 nCr이다.nCr 공식만 알고 있으면 해당 공식 그대로 이용해 쉽게 풀 수 있다. 팩토리얼을 구하기 위해 팩토리얼 계산 메소드 getFactorial()을 사용하여 풀이했으며, 이는 순환 알고리즘을 이용해 작성할 수 있다. [JAVA]늘 그렇듯 BufferedReader 사용String[] input=in.readLine().split(" ");readLine()은 한 줄 전체를 읽는 메소드이므로 split()을 이용하여 띄어쓰기 단위로 한 번 나눠 주었다.Scanner 사용하려면 띄어쓰기 고하지 않고 ne.. 2024. 7. 6. 백준 2292: 벌집(java/C) 문제 풀이 중심(1)으로부터 떨어진 바퀴 수? 에 따라 나눌 수 있다중심을 0번째라고 하면 2~7은 1바퀴째, 8~19는 2바퀴째... 이런 식으로정리하면 아래와 같습니다.같은 구간에 속하는 방들끼리는 1번 방에서부터의 경유 방 개수(이하 거리라 하겠음)가 동일하고(원-반지름 개념으로 생각하셔도 괜찮을 듯)각 구간에 속하는 방 수는 다음 바퀴로 넘어갈 때마다 6개씩 증가한다. 같은 구간에 속하는 방은 중심에서부터 거리가 동일구간이 바뀔 때마다 거리가 1씩 증가이 둘을 이용해 풀이할 수 있다.int count=1; //중심일 때 거리 1int ran=2; //구간 최솟값 시작: 2if(N==1) System.out.println(1);else{ while(ran N이 1일 때는 1을 출력하면 되고, .. 2024. 7. 6. 이전 1 ··· 19 20 21 22 23 24 25 ··· 36 다음