본문 바로가기
알고리즘

[C++][BOJ/백준][단계별로 풀어보기] 5. 1차원 배열

by lewns2 2021. 6. 6.

1. (10818번) 1차원 배열 단계 - 일반 풀이

#include <iostream>

using namespace std;

int main()
{
	int N;
	cin >> N;
	
	int *array;
	array = new int[N];
	
	int Min, Max;
	
	for(int i = 0; i < N; i++)
	{
		cin >> array[i];
		
	}
	
	Min = array[0];
	Max = array[0];
	
	for(int i = 0; i < N; i++)
	{
		if(Min >= array[i])
		Min = array[i];
		
		else if(Max <= array[i])
		Max = array[i];
		
	}
	
	cout << Min << " " << Max << endl;
}

 

1. (10818번) 1차원 배열 단계 - 정렬 풀이

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	int N;
	cin >> N;
	
	int array[N];
	
	for(int i = 0; i < N; i++)
	{
		cin >> array[i];
	}
	
	sort(array, array+N);
	
	cout << array[0] << " " << array[N-1] << " ";

}

 

2. (2562번) 최댓값

#include <iostream>

using namespace std;

int main()
{
	int num[9];
	int max = 0;
	int index = 0;
	
	for(int i = 0; i<9; i++)
	{
		cin >> num[i];
		
		if(max < num[i])
		{
			max = num[i];
			index = i;
		}
	}
	
	cout << max << endl << index+1;

}

 

3. (2577번) 숫자의 개수

#include <iostream>

using namespace std;

int main()
{
	int a, b, c;
	cin >> a >> b >> c;
	int result = a*b*c;
	
	int arr[10] = {0};
	
	while(result != 0) 
	{
		arr[result % 10] += 1;
		result /= 10;
	}
	
	for(int i = 0; i<10; i++)
	{
		cout << arr[i] << endl;
	}

}

 

4. (3052번) 나머지 : 정렬 시 같은 나머지값들이 뭉치게 되므로 쉽게 풀이 가능

풀이 해설 

  1. 나머지값을 가진 배열 생성 및 정렬
  2. 정렬 후 순서대로 두개씩 비교 : 만약 같은 수가 나오면 카운트
  3. 전체 원소 - 카운트된 값
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	int n[10];
	int arr[10]; 
	int cnt = 0;
	for(int i = 0; i < 10; i++)
	{
		cin >> n[i];
		arr[i] = n[i]%42;
	}
	
	sort(arr, arr+10);
	
	for(int i =0; i<9; i++)
	{
		if(arr[i] == arr[i+1])
		cnt += 1;

	}
	cout << 10-cnt;
}

 

5. (1546번) 평균

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	int n;
	cin >> n;
	
	double score[n];
	
	for(int i = 0; i < n; i++)
	{
		cin >> score[i];
	}
	
	sort(score, score+n);
	
	double s[n]; // 조작된 점수 
	double sum;
	
	for(int i = 0; i <n; i++)
	{
		score[i] = score[i]/score[n-1]*100;	
		sum += score[i];
	}
	
	cout << sum/n << " ";
}
	

 

6. (8958번) OX퀴즈

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int t;
	cin >> t;
	int sum, score;
	for(int i =0; i<t; i++)
	{
		sum = 0;
		score = 0;
		
		string s;
		cin >> s;
		
		for(int j = 0; j<s.size(); j++)
		{
			char ans = s[j];
			
			if(s[j] == 'O')
			{
				score += 1;
				sum += score;
			}
			
			else
			{
				score = 0;
			}
			
		}
		cout << sum << endl;
	}
	
}

 

7. (4344번)평균은 넘겠지

#include <iostream>

using namespace std;

int main()
{
	int c, n, cnt;
	cin >> c;
	int score[1000] = {0};
	int sum;
	int avg;
	double answer;
	
	for(int i = 0; i < c; i++)
	{
		avg = 0;
		cnt = 0;
		sum = 0;
		cin >> n;
		
		for(int j = 0; j < n; j++)
		{
			cin >> score[j];	
			sum += score[j];
		}
		avg = sum / n;	
		
		for(int j = 0; j < n; j++)
		{
			if(score[j] > avg)
			cnt += 1;
		}
		answer = (double)cnt / n * 100;

		cout << fixed;
		cout.precision(3);
		cout << answer << "%" << endl;
	}
}
728x90
반응형

'알고리즘' 카테고리의 다른 글

[C++] 데이터 구조(1) - Dynamic arrays(vector, string)  (0) 2021.06.12
[C++] 정렬  (0) 2021.06.06
그래프 탐색 알고리즘  (0) 2021.06.04
[C++] 기초 문법  (0) 2021.06.03
[C++][BOJ/백준][단계별로 풀어보기] 3. for문  (0) 2021.05.28