구현문제 같다. TL이 넉넉해서 무지성으로 입력받아 sort해도 풀릴꺼같다.

내가 푼 방식은 어차피 작은 수부터 출력하므로 0부터 9까지 몇번 나오는지만 알면 된다.

그 후 0부터 9만큼 들어온 만큼 출력하면 된다.

#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main(int argc, char** argv)
{
	int test_case;
	int T;

	string num[10] = { "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN" };

	cin >> T;

	for (test_case = 1; test_case <= T; ++test_case)
	{
		string temp; cin >> temp;
		int N; cin >> N;

        string in;
		vector<int> cnt(10, 0);
        for (int j = 0; j < N; j++)
        {
            cin >> in;
            
			for(int i = 0; i < 10; i++)
				if (num[i] == in)
				{
					cnt[i]++;
					break;
				}
        }

		cout << temp << '\n';
		for (int i = 0; i < 10; i++)
			for (int j = 0; j < cnt[i]; j++)
				cout << num[i] << ' ';
		cout << '\n';
	}

	return 0;
}

'Coding_Test 연습 > SWEA' 카테고리의 다른 글

[SWEA] (C++) D3 1228 암호문1  (0) 2022.04.11
[SWEA] (C++) D3 1225 암호생성기  (0) 2022.04.11
[SWEA] (C++) D3 1220 Magnetic  (0) 2022.04.10
[SWEA] (C++) D3 1217 거듭 제곱  (0) 2022.04.10
[SWEA] (C++) D3 1216 회문2  (0) 2022.04.10

쉬운 구현 문제같다. 다만 교착상태를 세아리는것은 기준을 잘 정해야 할 것같다.

#include<iostream>
#include<vector>

using namespace std;

int main(int argc, char** argv)
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int test_case;
	int T = 10;

	for (test_case = 1; test_case <= T; ++test_case)
	{
		int N; cin >> N;
		vector<vector<int>> map(N, vector<int>(N));
		for (int i = 0; i < N; i++)
			for (int j = 0; j < N; j++)
				cin >> map[i][j];

		int cnt = 0;
		for (int i = 0; i < N; i++)
		{
			int prev = 0;
			for (int j = 0; j < N; j++)
			{
				if (map[j][i] == 2 && prev != 0)
				{
					cnt++;
					prev = 0;
				}
				else if (map[j][i] == 1 && prev == 0)
					prev = 1;
			}
		}

		cout << '#' << test_case << ' ' << cnt << '\n';
	}
	return 0;
}

'Coding_Test 연습 > SWEA' 카테고리의 다른 글

[SWEA] (C++) D3 1225 암호생성기  (0) 2022.04.11
[SWEA] (C++) D3 1221 GNS  (0) 2022.04.10
[SWEA] (C++) D3 1217 거듭 제곱  (0) 2022.04.10
[SWEA] (C++) D3 1216 회문2  (0) 2022.04.10
[SWEA] (C++) D3 1215 회문1  (0) 2022.04.10

왜 3단계인지 모르겠음.

재귀로 풀래서 일단 재귀로 풀은 코드입니다.

#include<iostream>

using namespace std;

int POW(int a, int p)
{
	if (p == 1)
		return a;

	return a * POW(a, p - 1);
}

int main(int argc, char** argv)
{
	int test_case;
	int T = 10;

	for (test_case = 1; test_case <= T; ++test_case)
	{
		int N; cin >> N;
		int A, P; cin >> A >> P;

		int out = POW(A, P);

		cout << '#' << test_case << ' ' << out << '\n';
	}
	return 0;
}

'Coding_Test 연습 > SWEA' 카테고리의 다른 글

[SWEA] (C++) D3 1221 GNS  (0) 2022.04.10
[SWEA] (C++) D3 1220 Magnetic  (0) 2022.04.10
[SWEA] (C++) D3 1216 회문2  (0) 2022.04.10
[SWEA] (C++) D3 1215 회문1  (0) 2022.04.10
[SWEA] (C++) D3 1213 String  (0) 2022.04.10

회문1의 소스와 비슷하다. 다만 최대값을 구해야하기 때문에 N = 100에서 시작하여 찾으면 멈춘다.

#include<iostream>
#include<vector>
#include<string>

using namespace std;

vector<string> map(100);

bool horizon(int row, int col, int n)
{
	for (int k = 0; k < n / 2; k++)
		if (map[row][col + k] != map[row][col + n - 1 - k])
			return false;

	return true;
}

bool vertical(int row, int col, int n)
{
	for (int k = 0; k < n / 2; k++)
		if (map[row + k][col] != map[row + n - 1 - k][col])
			return false;

	return true;
}

bool PALINDROME(int n)
{
	for (int i = 0; i < 100; i++)
		for (int j = 0; j <= 100 - n; j++)
			if (horizon(i, j, n))
				return true;

	for (int i = 0; i <= 100 - n; i++)
		for (int j = 0; j < 100; j++)
			if (vertical(i, j, n))
				return true;

	return false;
}

int main(int argc, char** argv)
{
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	int test_case;
	int T = 10;

	for (test_case = 1; test_case <= T; ++test_case)
	{
		int temp; cin >> temp;

		for (int i = 0; i < 100; i++) cin >> map[i];

		int cnt = 1;
		for (int N = 100; N >= 2; N--)
		{
			if (PALINDROME(N))
			{
				cnt = N;
				break;
			}
		}

		cout << '#' << test_case << ' ' << cnt << '\n';
	}
	return 0;
}

'Coding_Test 연습 > SWEA' 카테고리의 다른 글

[SWEA] (C++) D3 1220 Magnetic  (0) 2022.04.10
[SWEA] (C++) D3 1217 거듭 제곱  (0) 2022.04.10
[SWEA] (C++) D3 1215 회문1  (0) 2022.04.10
[SWEA] (C++) D3 1213 String  (0) 2022.04.10
[SWEA] (C++) D3 1209 Sum  (0) 2022.04.10

그냥 구현 하면 되는 문제같다.

특별한 알고리즘 필요없고 case 나눠서 for문 모두 확인하여 세보면 됨.

#include<iostream>
#include<vector>
#include<string>

using namespace std;

bool horizon(vector<string> map, int row, int col, int n)
{
	for (int k = 0; k < n / 2; k++)
		if (map[row][col + k] != map[row][col + n - 1 - k])
			return false;

	return true;
}

bool vertical(vector<string> map, int row, int col, int n)
{
	for (int k = 0; k < n / 2; k++)
		if (map[row + k][col] != map[row + n - 1 - k][col])
			return false;

	return true;
}


int main(int argc, char** argv)
{
	int test_case;
	int T = 10;

	for (test_case = 1; test_case <= T; ++test_case)
	{
		int N; cin >> N;
		vector<string> map(8);
		for (int i = 0; i < 8; i++) cin >> map[i];

		int cnt = 0;
		for (int i = 0; i <= 8 - N; i++)
		{
			for (int j = 0; j <= 8 - N; j++)
			{
				if(horizon(map, i, j, N))
					cnt++;
				if(vertical(map, i, j, N))
					cnt++;
			}
		}

		for(int i = 9 - N; i < 8; i++)
			for(int j = 0; j <= 8 - N; j++)
				if (horizon(map, i, j, N))
					cnt++;

		for (int i = 0; i <= 8 - N; i++)
			for (int j = 9 - N; j < 8; j++)
				if (vertical(map, i, j, N))
					cnt++;

		cout << '#' << test_case << ' ' << cnt << '\n';
	}
	return 0;
}

'Coding_Test 연습 > SWEA' 카테고리의 다른 글

[SWEA] (C++) D3 1217 거듭 제곱  (0) 2022.04.10
[SWEA] (C++) D3 1216 회문2  (0) 2022.04.10
[SWEA] (C++) D3 1213 String  (0) 2022.04.10
[SWEA] (C++) D3 1209 Sum  (0) 2022.04.10
[SWEA] (C++) D3 1208 Flatten  (0) 2022.04.10

+ Recent posts