구조체는 왜 사용하는가? 코드를 짜게 될때 지금까지 우리가 아는 상식으론 여러 정보를 입력받고 싶다면 받고싶은 정보마다 배열을 짜야합니다. 이럴경우 변수도 너무 많이 선언해야하고 메모리도 너무 많이 차지하게 됩니다. 따라서 이런 문제를 해결하고자 구조체를 이용합니다. 구조체 선언과 이용 구조체는 위의 코드 사진처럼 struct 구조체 이름 { 안의 인자값; 안의 인자값; }; 이런 형식으로 선언하게 된다. 또한 사용할때는 위의 사진처럼 선언해줄때처럼 struct 구조체 이름을 쓴 후 사용할 구조체 변수를 써준다. 또한 안의 구조체 인자값에 접근하기 위해 '.' 을 사용해준다. 포인터 변수도 선언해줄 수 있는데 그것은 다음에 다루도록 하겠다. struct 선언해준 구조체 이름 구조체 변수 이름; 구조체 변..
https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 먼저 이번 문제의 커리큘럼을 이해보자면 최대 300 까지의 인덱스를 가진 이차원 배열에서 시작합니다. 1. 입력받을 인덱스의 최대값을 입력해줍니다 2. 인덱스에 넣어줄 값을 입력 받습니다. 3. 몇번 더 해줄지 입력 받습니다. 4. 예를 들어 1 1 2 3 이면 A[1][1] 부터 A[2][3] 반복문을 돌리면서 인덱스 값들을 더 해주고 출력합니다. #define _C..
https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 동전 0 문제는 그리디 알고리즘을 이용한 문제입니다. 그리디 알고리즘이란? 간단히 말해서 하나의 트리에서 최종 출력값이 가장 큰 것이 아닌 지금 바라보고 있는 상태에서 가장 큰것을 가져가면서 트리를 타고 내려가게 되는 알고리즘입니다. #define _CRT_SECURE_NO_WARNINGS #include int main() { in..
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 이 문제에 들어가기 전 이 문제는 스택을 사용하는 자료형 문제로 스택은 간단히 말해 거대한 탑 모양의 메모리라고 생각하면 된다. push() 를 이용해 맨 밑에부터 자료를 넣어주고 pop() 을 이용해 탑의 꼭대기에서부터 값을 빼주는 가장 마지막에 넣은 정보를 가장 먼저 빼주는 자료구조입니다. 후입선출(後入先出/Last In First Out—LIFO)형 자료구조..
사실 이번 천코대 대회를 준비하면서 머리는 부족하지만 여러 문제를 풀어보고 싶었다. 확실히 복습과 배움이 부족했던 것 같고 스스로 학습하고 복습하는 태도를 가져야 할 것 같다. 아무튼 문제들로 넘어 가겠다. 1. 분산처리 https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net #define _CRT_SECURE_NO_WARNINGS #include int main() { int t; int num, base_num; int sum = 1; scanf("%d", ..
https://www.acmicpc.net/problem/20492 20492번: 세금 선린인터넷고등학교의 한 학생은 프로그래밍 대회에 참가하여 거액의 상금을 수상하는 영광을 누리게 되었다. 하지만, 이 학생이 상금 금액의 전부를 수령하게 되는 것은 아니다. 상금의 일부 www.acmicpc.net 선린인터넷고 제4회 천하제일 코딩대회 예선 문제였던 세금 문제에 대해 풀어보겠습니다. #define _CRT_SECURE_NO_WARNINGS #include int main() { float num; float num_1, num_2; scanf("%f", &num); num_1 = (num/100)*78; num_2 = ((num/100)*80)+((((num/100)*20)/100)*78); printf..
들어가기 전 포인터란 무엇인가에 대해 간단하게 알아보자면 배열이나 값의 메모리 속 주소를 저장해주는 것입니다. #include int main(){ int *point; int* point1; int * point2; // 포인터 선언 int n = 10; //일반 변수 point = &n; printf("%d", point); } 들어가기 전 포인터와 이 간단한 코드에 대해서 이해하기 위해서 몇가지를 알려드리겠습니다. 참조연산자란? 참조 연산자는 * 을 말하며 포인터의 이름이나 변수의 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환합니다. 위 코드에서는 *point , 등으로 포인터 변수를 만드는데 사용해 주었습니다만 3개의 포인터 변수들에 참조연산자의 위치가 모두 다른것을 볼 수 있으..