1181cpp 문제 해결.

2022. 12. 30. 18:11boj

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

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

1181 문제를 나는 벡터에 string 헤더를 집어넣고, 정렬한 다음. 중복을 제거하는 방식을 사용했다.

사실 이문제의 경우 난이도가 너무 낮은 문제임으로 딱히 설명할 필요가 없을 수 있다.

 

따라서 나는 vector의 중복을 제거하는 방법 에 대해서 이야기 해보려고 한다.

c++ 에서는 unique라는 녀석을 제공하는데 여기서 unique의 경우 중복을 발견하면 마지막의 위치로 결과를 이전 시킨후 

여기서 마지막 값 이후로는 쓰레기값을 집어넣고 마지막값이 여기입니다를 리턴해준다.

따라서 우리는 

 

auto lt = unique(vec.begin(), vec.end());
cout << *lt << "\n";
//를 통해 확인 할 수 있다. 여기서 결과를 지우지않고 그냥 출력

for (auto it = v.begin(); it != lt; ++it) {
	cout << *it;
}

이렇게 해결해볼 수 있다. 하지만 사실 문제를 위와 같이 처리하는것 보다 클래스를 만들어서 

추가할때 마다 찾는 로직을 구현해도 전혀 문제되지 않는 방식일듯 하다 .

'boj' 카테고리의 다른 글

경쟁적 전염  (0) 2023.01.30
15649 문제 해결.  (0) 2023.01.04
boj 11000번. 강의실 배정.  (0) 2022.12.29
냅색 문제 12865 배낭  (0) 2022.12.29
별찍기-10 2447  (3) 2022.12.26