TIL

2024.12.23

iiblueblue 2024. 12. 23. 11:35

Code KATA

오늘치의 알고리즘 코드카타를 풀이하고 정리하였다

https://iiblueblue.tistory.com/90

 

[2024.12.21] 정수 내림차순으로 배치하기

문제 설명함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.  제한사

iiblueblue.tistory.com

https://iiblueblue.tistory.com/91

 

[2024.12.22] 하샤드 수

문제 설명양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받

iiblueblue.tistory.com

https://iiblueblue.tistory.com/92

 

[2024.12.23] 두 정수 사이의 합

문제 설명두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a=3, b=5인 경우, 3+4+5=12이므로 12를 리턴합니다.  제한사항a와 b가 같은 경

iiblueblue.tistory.com

정수 내림차순으로 배치하기, 하샤드 수 모두 정수를 자릿수 별로 쪼개서 처리를 해줘야하는 문제였다. 이전에도 계속 그런 문제들이 나왔었기 때문에 풀이하는데 어려움은 없었지만 코드를 간단히 하려다 오류가 발생했다. 정수 내림차순으로 배치하기를 풀이할 때 줄인 코드가 이상하게 의미는 같은데도 동작하지 않았다. 아직 그 원인을 찾지 못했으나 다음에는 왜 그런지 알아봐야겠다.

 

두 정수 사이의 합 문제는 문제에서 시키는대로하면 풀이가 되긴 하지만 조건문, 반복문이 들어가서 다른 방법으로 풀이하면 더 빨리 풀이가 되지 않을까 생각한다. 더 쉽고 간단한 방법이 있을 것 같은데 다음에 다시 풀이할 기회가 된다면 다른 방법도 없는지 더 깊게 생각해봐야할 것 같다.

 

 

C++

https://iiblueblue.tistory.com/98

 

연산 주의사항

⊙ 표준산술연산자를 사용하여 연산할 때 주의해야하는 상황들을 정리해보자. 정수, 실수 나누기정수와 실수를 나누기할 때는 결과값이 무엇이 나오느냐가 중요하다.정수 /  정수 = 정수실수 /

iiblueblue.tistory.com

https://iiblueblue.tistory.com/96

 

Array와 Vector의 차이점과 사용법

⊙ Array와 Vector의 차이점을 알아보자.⊙ Array의 선언, 활용할 수 있는 함수에 대해 알아보자.⊙ Vector의 선언, 활용할 수 있는 함수에 대해 알아보자. Array와 Vector의 차이점Array와 Vector 모두 여러

iiblueblue.tistory.com

 

https://iiblueblue.tistory.com/99

 

함수 인자 전달 방식

⊙ 값에 의한 전달과 참조에 의한 전달을 이해하고 차이를 안다.⊙ 참조 변수에 대해 안다.⊙ 함수에 전달되는 배열의 특징을 이해한다.⊙ 상수 참조 매개변수를 알고 필요성을 이해한다. 함수

iiblueblue.tistory.com

 

 

 

Quest

#include <iostream>
using namespace std;

// 합계를 구하는 함수
double SumArray(const double input_array[], int array_size)
{
	double sum_value = 0;
	for (int i = 0; i < array_size; i++)
	{
		sum_value += input_array[i];
	}

	return sum_value;
}

// 평균을 구하는 함수
double AverageArray(const double input_array[], int array_size)
{
	double sum_value = SumArray(input_array, array_size);
	double average_value = sum_value / array_size;

	return average_value;
}

// 오름차순 정렬 함수(선택 정렬)
void SortAscending(double input_array[], int array_size)
{
	double min_value;
	int min_value_index = 0;
	double swap_container;

	for (int j = 0; j < array_size; j++)
	{
		min_value = input_array[j];

		for (int i = j; i < array_size; i++)
		{
			// 최솟값 찾기
			if (min_value >= input_array[i])
			{
				min_value = input_array[i];
				min_value_index = i;
			}
		}

		// 자리 바꾸기(최솟값 제일 앞으로)
		swap_container = input_array[j];
		input_array[j] = min_value;
		input_array[min_value_index] = swap_container;
	}
}

// 내림차순 정렬 함수(선택 정렬)
void SortDescending(double input_array[], int array_size)
{
	double max_value;
	int max_value_index = 0;
	double swap_container;

	for (int j = 0; j < array_size; j++)
	{
		max_value = input_array[j];

		for (int i = j; i < array_size; i++)
		{
			// 최댓값 찾기
			if (max_value <= input_array[i])
			{
				max_value = input_array[i];
				max_value_index = i;
			}
		}

		// 자리 바꾸기(최댓값 제일 앞으로)
		swap_container = input_array[j];
		input_array[j] = max_value;
		input_array[max_value_index] = swap_container;
	}
}

int main()
{
	const int kArrayMaxSize = 5;
	double input_array[kArrayMaxSize];

	// 숫자 5개를 입력 받아 배열에 저장
	for (int i = 0; i < kArrayMaxSize; i++)
	{
		cout << i << "번째 숫자를 입력하세요 : ";
		cin >> input_array[i];
	}

	// 합계 구하기
	cout << "합계 : " << SumArray(input_array, kArrayMaxSize) << endl;

	// 평균 구하기
	cout << "평균 : " << AverageArray(input_array, kArrayMaxSize) << endl;

	// 배열 정렬하기
	int sort_type;
	
	cout << "배열을 정렬합니다[오름차순 = 1 / 내림차순 = 2]";
	cin >> sort_type;

	if (sort_type == 1)
	{
		SortAscending(input_array, kArrayMaxSize);
	}
	else if (sort_type == 2)
	{
		SortDescending(input_array, kArrayMaxSize);
	}
	else
	{
		cout << "입력에 오류가 있습니다. 정렬은 실행되지 않았습니다." << endl;
		return -1;
	}

	cout << "[";
	for (int i = 0; i < kArrayMaxSize; i++)
	{
		cout << input_array[i] << ", ";
	}
	cout << "\b\b]" << endl;

	return 0;
}

'TIL' 카테고리의 다른 글

2024.12.26  (0) 2024.12.26
2024.12.24  (0) 2024.12.24
2024.12.20  (0) 2024.12.20
2024.12.18  (1) 2024.12.18
2024.12.17  (0) 2024.12.17