문제 링크: https://www.acmicpc.net/problem/2866

 

그냥 문제에 써있는대로 풀면 됩니다

풀고 나서 다른사람들 풀이를 보니 이분탐색을 썼더라고요. 나중에 시간나면 이분탐색으로도 풀어보겠습니다. 지금은 귀찮아서리,,

 

#pragma GCC optimize ("Ofast")

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;

char table[1000][1000];


int main()
{
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
#endif

	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	int r, c;
	cin >> r >> c;
	
	for (int i = 0; i < r; ++i)
		for (int j = 0; j < c; ++j)
			cin >> table[i][j];
	
	set<string> s;
	for (int j = 0; j < c; ++j) {
		string str;
		for (int i = 0; i < r; ++i)
			str += table[i][j];
		s.insert(str);
	}


	for (int i = 0; i < r-1; ++i) {
		set<string> s2;
		for (auto& str : s)
			s2.insert(str.substr(1));

		if (s2.size() != c) {
			cout << i << '\n';
			return 0;
		}

		s = move(s2);
	}
	cout << r - 1 << '\n';



	return 0;
}

별로 효율적이지는 않지만 통과는 되는 버전입니다

반응형

'Online Judge > 백준' 카테고리의 다른 글

[백준][C++] 3107: IPv6  (0) 2020.07.06
[백준][C++] 2671: 잠수함식별  (0) 2020.07.05
[백준][C++] 2866: 문자열 잘라내기  (0) 2020.07.04
[백준][C++] 1089: 엘리베이터  (0) 2020.07.03
[백준][C++] 4836: 춤  (0) 2020.07.02
[백준][C++] 1043: 거짓말  (0) 2020.06.29