728x90

// 2021.03.12(금)

// 배열

// 백준 2562 최댓값

// 9개의 자연수 입력받고 최댓값과 최댓값이 몇번째 수 인지 구하기

www.acmicpc.net/problem/2562

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net

#include <stdio.h>


int main() {
	int i, arr[9], max = 0, idx;

	for (i = 0; i < 9; i++)        // sizeof(arr) : 길이 구함, 같은 곳에 없으면 len
		scanf_s("%d", &arr[i]);    // arr + i

	for (i = 0; i < 9; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
			idx = i;
		}
	}

	/*
	scanf_s("%d", arr);

	max = arr[0];

	for (int i = 1; i < sizeof(arr) / sizeof(int); i++) {
		scanf_s("%d", arr + i);

		if (arr[i] > max)
		{
			max = arr[i];
			idx = i;
		}
	}
	*/

	printf("%d\n%d", max, idx + 1);

	return 0;

}

 

* scanf_s("%s", arr) // 지금은 안됨(입력 버퍼 오류 때문(스페이스)) 대신 scanf_s("%s, str, 10) // 10은 크기

* rewind // ? 버퍼지우기

* {} // 스코프 ? 범위

* static 변수(정적 변수) // 스코프에서 벗어나도 살아있음

* 동적 배열(포인터 활용) // 은행 계좌 - 10명 계좌 만들었는데 11명이 옴, 정적 배열이면 다시 짜야함, 동적 배열이면 붙힐 수 있음, 런타임 시간동안 할당 가능

* p = (int*)malloc(3 * sizeof(int)); // 반환형을 캐스팅 해야함(malloc이 반환하는 게 void *이므로 int*로 바꿔줌), 강제 형변환(명시적), double 값은 int에 넣으면 묵시적(자동 형변환)

* 가비지 컬렉터 : 알아서 메모리 해제 해줌 (자바, 파이썬), C나 C++ 프로그래머가 직접 해야함

* free(p) // 동적배열 해제하는 함수

* a = (int*)malloc(10 * sizeof(int)); // arr[10];

# include <stdio.h>

int main() {
	int arr2[5][4];

	static int a; // 정적 변수

	int num[9] = { 1,2,3,4,5,6,7,8,9 };
	int k = 0;

	// 행렬 동적배열로 할당
	int** twop = NULL;
	int* p;
	p = (int*)malloc(3 * sizeof(int*));

	free(p);

	/*
	for (int i = 0; i < 3; i++) {
		p = (int*)malloc(3 * sizeof(int));
		twop[i] = p;
	}
	*/
}

 

 

// 동적 배열 할당

// 백준 2588 곱셈

www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

#include <iostream>
using namespace std;

int main()
{
	int a, b, *b_n, *mul, result = 0;

	cin >> a;    // a = 472 (첫 번째 수)
	cin >> b;    // b = 385 (두 번째 수)
	
	b_n = (int*)malloc(3 * sizeof(int*));   // 두 번째 수의 각 자리 수를 저장할 배열 b_n

	if (b_n == NULL) return -1;

	for (int i = 0; i < 3; i++)  // 두번째 수의 각 자리 수를 b_n에 저장 b_n = {3, 8, 5}
	{
		b_n[i] = b % 10;        
		b /= 10;
	}

	mul = (int*)malloc(3 * sizeof(int*));  // 곱셈 과정

	if (mul == NULL) return -1;

	for (int i = 0; i < 3; i++)
	{
		mul[i] = a * b_n[i];
		cout << mul[i] << endl;  // 곱셈 과정 출력

		if (i == 1) mul[i] *= 10;   // 3776 * 10
		else if (i == 2) mul[i] *= 100;  //1416 * 100
	}

	for (int i = 0; i < 3; i++)
	{
		result += mul[i];  
	}

	cout << result;

	free(b_n);
	free(mul);

	return 0;

}

// 동적 배열로 풀어라는 줄 알았는데 기억 풀어보라는 거였다..

 

 

// 백준 2588 나머지

www.acmicpc.net/problem/10430

 

10430번: 나머지

첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000)

www.acmicpc.net

#include <iostream>
using namespace std;

int main() {
	int a, b, c;

	cin >> a >> b >> c;

	cout << (a + b) % c << "\n" << ((a % c) + (b % c)) % c << "\n" << (a * b) % c << "\n" << ((a % c) * (b % c)) % c << "\n";
}

* #include<cstdio> // C언어 문법 사용 가능

* ctrl K + ctrl C // 주석 처리

* 디버깅 

반응형

'전공 공부 > C++ 튜터링' 카테고리의 다른 글

C++ 튜터링 2주차  (0) 2021.03.21
백준 2941 크로아티아 알파벳  (0) 2021.03.20
백준 10809 알파벳 찾기  (0) 2021.03.20
백준 2751 수 정렬하기 2  (0) 2021.03.20
백준 2750 수 정렬하기  (0) 2021.03.20
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기