반응형

 

📖 문제

 

📋 코드

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

set<string> s;

int main() {

	int N, K, t;
	cin >> N;

	for (int i = 0; i < N; i++){
		cin >> K;
		string tmp = "";
		string str = "";
		for (int j = 0; j < K; j++)
		{
			cin >> tmp;
			str += "*"+tmp;
			s.insert(str);
		}
	}
	
	for (auto value : s) {
		int cnt = count(value.begin(), value.end(), '*');
		int pos = value.find_last_of("*");
		string tmp = value.substr(pos+1);
		for (int i = 0; i < cnt - 1; i++) cout << "--";
		cout << tmp << '\n';
	}
}

👨🏻‍💻 결과

 

📕 풀이 방법

 

set<string> s;

int main() {

	int N, K, t;
	cin >> N;

	for (int i = 0; i < N; i++){
		cin >> K;
		string tmp = "";
		string str = "";
		for (int j = 0; j < K; j++)
		{
			cin >> tmp;
			str += "*"+tmp;
			s.insert(str);
		}
	}
	
	for (auto value : s) {
		cout << value << '\n';
	}
}

set 자료구조는 중복 데이터를 없애주고 정렬까지 해주는 역할을 합니다.

 

예제 입력 2로 설명을 드리자면!

4
2 KIWI BANANA
2 KIWI APPLE
2 APPLE APPLE
3 APPLE BANANA KIWI

위의 데이터로 입력이 들어오면 set에는

*APPLE
*APPLE*APPLE
*APPLE*BANANA
*APPLE*BANANA*KIWI
*KIWI
*KIWI*APPLE
*KIWI*BANANA

와 같이 데이터들이 insert 됩니다.

 

for (auto value : s) {
	int cnt = count(value.begin(), value.end(), '*');
	int pos = value.find_last_of("*");
	string tmp = value.substr(pos+1);
	for (int i = 0; i < cnt - 1; i++) cout << "--";
	cout << tmp << '\n';
}

여기서 "*"의 개수 -1 만큼 "--"를 출력해주고 마지막 "*" 이후의 문자열을 출력하면

APPLE
--APPLE
--BANANA
----KIWI
KIWI
--APPLE
--BANANA

위와 같은 모양이 출력될 것입니다.

 

 

🔗 링크

https://www.acmicpc.net/problem/14725

 

14725번: 개미굴

첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N개가 주어진다.  (1 ≤ N ≤ 1000) 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이

www.acmicpc.net

 

반응형

'🧩PS > 🥈Nomal' 카테고리의 다른 글

[C++] 백준 18111번 - 마인크래프트  (0) 2022.01.29
[JAVA] 백준 5430번 - AC  (0) 2022.01.10
[JAVA] 백준 1021번 - 회전하는 큐  (1) 2022.01.10
[JAVA] 백준 1966번 - 프린터 큐  (0) 2022.01.04
[JAVA] 백준 18258번 - 큐 2  (0) 2021.12.07

+ Recent posts