Part1

유기태·2022년 11월 3일

Algorithm Study

목록 보기
2/2

문제

번호제목링크
2557Hello World2557/Hello World
10869사칙연산10869/사칙연산
2588곱셈2588/곱셈
2753윤년2753/윤년
10871X보다 작은 수10871/X보다 작은 수
8958OX퀴즈8958/OX퀴즈
4344평균은 넘겠지4344/평균은 넘겠지
11654아스키 코드11654/아스키 코드
1152단어의 개수1152/단어의 개수
2869달팽이는 올라가고 싶다2869/달팽이는 올라가고 싶다
1978소수 찾기1978/소수찾기
10872팩토리얼10872/팩토리얼
1914하노이 탑1914/하노이 탑
9663N-Queen9663/N-Queen
2750수 정렬하기2750/수 정렬하기
2751수 정렬하기22751/수 정렬하기2
10989수 정렬하기310989/수 정렬하기3
1181단어 정렬1181/단어 정렬
2390일곱 난쟁이2390/일곱 난쟁이
10819차이를 최대로10819/차이를 최대로

풀이

Hello World

#include<iostream>
using namespace std;
int main()
{
	cout << "Hello World!";
}

사칙 연산

#include<iostream>
using namespace std;
int main()
{
	int A, B;
	cin >> A >> B;
	cout << A + B << '\n' << A - B << '\n' << A * B << '\n' << A / B << '\n' << A % B;
}

곱셈

#include<iostream>
using namespace std;
int main()
{
	int A, B;
	cin >> A >> B;
	cout << A * (B % 10)<<'\n';
	cout << A * ((B / 10) % 10)<<'\n';
	cout << A * (B / 100)<<'\n';
	cout << A * B<<'\n';
}

윤년

#include<iostream>
using namespace std;
int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	int year;
	cin >> year;
	if (!(year % 4) && (year % 100 || !(year % 400)))
	{
		cout << 1;
	}
	else
	{
		cout << 0;
	}
}

X보다 작은 수

#include<iostream>
#include<algorithm>
using namespace std;
int A[10005];
int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	int N, X;
	cin >> N >> X;
	for (int i = 0; i < N; i++)
	{
		cin >> A[i];
	}
	for (int i = 0; i < N; i++)
	{
		if (A[i] < X)
			cout << A[i] << ' ';
	}
}

OX퀴즈

#include<iostream>
#include<vector>
#include<string>
using namespace std;
vector<int>v;
int main()
{
	int n;
	int sum = 0;
	int counting = 0;
	string s;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> s;
		counting = 0;
		sum = 0;
		for (int j = 0; j < s.size(); j++)
		{
			if (s[j] == 'O')
			{
				counting++;
				sum += counting;
			}
			else
			{
				counting = 0;
			}
		}
		v.push_back(sum);
	}
	for (int nxt : v)
	{
		cout << nxt << '\n';
	}
}

평균은 넘겠지

#include<iostream>
#include<vector>
using namespace std;
int C;
vector<double>result;
int arr[1005];
int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	cin >> C;
	for (int i = 0; i < C; i++)
	{
		double N;
		double sum = 0;
		double average = 0;
		double counting = 0;
		cin >> N;
		for (int j = 0; j < N; j++)
		{
			double score;
			cin >> score;
			arr[j] = score;
			sum += score;
		}
		average = sum / N;
		for (int j = 0; j < N; j++)
		{
			if(arr[j]>average)
				counting++;
		}
		result.push_back((counting / N) * 100.f);
	}
	for (float nxt : result)
	{
		// c++ 소수자리 정하기
		cout << fixed;
		cout.precision(3);
		cout << nxt << '%' << '\n';
	}
}

아스키 코드

#include<iostream>
using namespace std;
int main()
{
	char c;
	int num;
	cin >> c;
	num = c;
	cout << num;
}

단어의 개수

#include<iostream>
#include<string>
using namespace std;
string s;
int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	//string s 받는거 get 사용
	getline(cin, s);
	bool word = false;
	int counting = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if ((('a'<=s[i])&&(s[i]<='z'))||(('A'<=s[i])&&(s[i]<='Z'))&&!word)
		{
			word = true;
		}
		else if (!((('a' <= s[i]) && (s[i] <= 'z')) || (('A' <= s[i]) && (s[i] <= 'Z'))) &&word)
		{
			word = false;
			counting++;
		}
	}
	if (word)
	{
		counting++;
	}
	cout << counting;
}

달팽이는 올라가고 싶다

#include<iostream>
using namespace std;
int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	int A, B, V,result;
	cin >> A >> B >> V;
	result = (V - A) / (A - B) + 1;
	(V - A) % (A - B) <= A&&(V-A)%(A-B)>0 ? result += 1 : result;
	cout << result;
}

소수 찾기

// 에라토스테네스의 체
#include<iostream>
#include<cstring>
using namespace std;
bool prime[1005];
int num[105];

int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	memset(prime, true, 1005);
	int N;
	int result=0;
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> num[i];
	}

	prime[1] = false;
	for (int i = 2; i*i <= 1000; i++)
	{
		if (prime[i])
		{
			for (int j = i * i; j <= 1000; j += i)
			{
				if (prime[j])
					prime[j] = false;
			}
		}
	}


	for (int i = 0; i < N; i++)
	{
		if (prime[num[i]])
			result++;
	}

	cout << result;
}

팩토리얼

#include<iostream>
using namespace std;

int recursion(int num)
{
	if (num == 0)return 1;
	else return num*recursion(num-1);
}

int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	int N;
	cin >> N;
	cout << recursion(N);
}

하노이 탑

코드를 입력하세요

N-Queen

#include<iostream>
using namespace std;

bool vertical[15];
bool check1[30];
bool check2[30];

int counting;
int N;

void Nqueen(int seq)
{
	if (seq == N)
	{
		counting++;
		return;
	}
	for (int i = 0; i < N; i++)
	{
		if (vertical[i]||check1[seq-i+(N-1)]||check2[seq+i])continue;
		vertical[i] = true;
		check1[seq - i + (N - 1)] = true;
		check2[seq + i] = true;
		Nqueen(seq + 1);
		vertical[i] = false;
		check1[seq - i + (N - 1)] = false;
		check2[seq + i] = false;
	}
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin >> N;

	Nqueen(0);

	cout << counting;
}

수 정렬하기

#include<iostream>
#include<algorithm>
using namespace std;

int num[1005];

int main()
{
	int N;
	cin >> N;
	for (int i = 0; i < N; i++)
		cin >> num[i];
	sort(num, num+N);

	for (int i = 0; i < N; i++)
		cout << num[i] << '\n';

}

수 정렬하기2

코드를 입력하세요

수 정렬하기3

코드를 입력하세요

단어 정렬

코드를 입력하세요

일곱 난쟁이

//permutation and combination 확실히 알기
#include<iostream>
#include<algorithm>
#include<cstring>
#include<array>
using namespace std;

int height[9];
int num[9] = { 0,0,0,0,0,0,0,1,1 };
int man[7];

int main()
{
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	for (int i = 0; i < 9; i++)
	{
		cin >> height[i];
	}

	int result = 0;
	
	do 
	{
		int count = 0;
		memset(man, 0, sizeof(int) * 7);
		result = 0;
		for (int i = 0; i < 9; i++)
		{
			if (num[i] == 0)
			{
				result += height[i];
				man[count++] = height[i];
			}
		}
		if (result == 100)
			break;
	} 
	while (next_permutation(num, num + 9));

	sort(man, man + 7);

	for (int nxt : man)
	{
		cout << nxt << '\n';
	}
}

차이를 최대로

코드를 입력하세요
profile
게임프로그래머 지망!

0개의 댓글