백준 10818, 2562, 2577, 8958, 4344

이푸름·2021년 9월 20일
0
post-custom-banner

10818 (최소, 최대)

Python

n = int(input())
num = list(map(int, input().split(" ")))

print(min(num), max(num))

파이썬의 내장함수 min(), max()를 이용하면 최댓값, 최솟값을 간편하게 구할 수 있다.

C++

#include <iostream>
using namespace std;

int	main(void) {
    int n, num;
	int min = 1000001, max = -1000001;
    cin >> n;
    for(int i = 0 ; i < n ; i++){
        cin >> num;
        if(num>max)
            max = num;
        if(num<min)
            min = num;
    }
	cout<<min<<" "<<max<<endl;
}

처음엔 min, max값을 0으로 초기화했다가 실제 min이 0보다 큰 수 인경우, 실제 max가 0보다 작은 경우가 있음을 깨닫고 위와 같이 수정하였다.

2562

Python

max = 0
n = 0

for i in range(9):
	num = int(input())
	if max < num:
		max = num
		n = i + 1
print(max, n, sep = "\n")

C++

#include <iostream>
using namespace std;

int	main(void) {
    int num, n = 0;
	int max = 0;

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

몇번째 줄인지 셀 때 n += 1; 이런식으로 카운트를 올려주면서 구하려고 하면 못구한다! for문의 i를 이용하자.

2577

Python

a = int(input())
b = int(input())
c = int(input())

num = str(a*b*c)
for i in range(10):
	print(num.count(str(i)))

str()로 형 변환을 해주고 count함수를 사용하여 num에서 i에 해당하는 수가 몇번 있는지 세어준다.

C++

#include <iostream>
using namespace std;

int	main(void) {
    int arr[10] = {0, };
	int a, b, c;
	int num;

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

num을 10으로 나눈 나머지로 끝자리 수를 구하고 이를 인덱스로 활용하여 카운트 해주는 아이디어.. 기억하자.

8958

Python

n = int(input())

for i in range(n):
	str = input()
	cnt = 0
	sum = 0
	for j in str:
		if j == 'O':
			cnt += 1
			sum += cnt
		else:
			cnt = 0
	print(sum)

C++

#include <iostream>
using namespace std;

int	main(void) {
	int n;
	string s;

	cin >> n;
	while (n--)
	{
		cin >> s;
		int cnt = 0, sum = 0;
		for (int i = 0; i < s.length(); i++)
		{
			if (s[i] == 'O')
			{
				cnt++;
				sum += cnt;
			}
			else
				cnt = 0;
		}
		cout << sum << endl;
	}
	return (0);
}

4344

Python

n = int(input())

for i in range(n):
	score = list(map(int, input().split()))
	avg = sum(score[1:]) / score[0]
	cnt = 0
	for j in score[1:]:
		if (avg < j):
			cnt += 1
	result = cnt / score[0] * 100
	print(**f'{result:.3f}%'******)

<파이썬 f-string으로 소수점 관리하기>
f를 먼저 써주고, 중괄호 사이에 {변수 : 소수점자리수}를 써준다.

C++

#include <iostream>
using namespace std;

int main() {
	int c, n, num;
	int avg;
	int score[1000] = {0, }; // 0으로 초기화
	double result;

	cin >> c;
	for (int i = 0; i < c; i++) {
		avg = 0;
		num = 0;
		cin >> n;

		for (int j = 0; j < n; j++) {
			cin >> score[j];
			avg = avg + score[j];
		}
		avg = avg / n;
		for (int j = 0; j < n; j++) {
			if (score[j] > avg)
				num++;
		}
		result = (double)num / n * 100;

		cout << fixed;
		cout.precision(3);
		cout << result << "%" << endl;
	}
}
post-custom-banner

0개의 댓글