본문 바로가기

단편글

vector 비교할 때

프로그래머스에서 문제를 풀다가 느낀점.

 

vector 나 배열같은 문제에서 2개의 리스트를 주고, 서로 비교하여 한쪽에만 있는 아이템을 리턴하라는 문제가 있었다.

 

이때, 아이템이 여러개 존재할 수 있다.

 

처음에는 iterator를 사용하여 for문 돌려서 비교하였다.

 

중복을 제거하기 위하여 있으면 없앴었다.

 

근데, 답은 답대로 틀리고, 수행시간도 너무 길었다. O(n2) 정도의 수행시간이 걸렸을것이다.

 

그래서 힌트를 얻은게 정렬하는 것이였다.

 

vector를 정렬하는 방법은 간단했다.

 

<algorithm> 헤더를 넣고.

 

vector v;

sort(v.begin(), v.end());

 

이렇게 하면 벡터의 처음과 끝이 정렬되었다.

 

이렇게 두 벡터를 정렬하고, for문 하나를 돌려서 처음부터 끝까지 1대1로 비교하면 되었다.

 

안맞는게 있으면 리턴.

 

algorithm 헤더가 진짜 만능이다.

'단편글' 카테고리의 다른 글

괄호와 스택  (0) 2020.07.01
BFS  (0) 2020.06.30
프로그래머스 연습 2주 후...  (0) 2020.06.29
pair 와 sort  (0) 2020.06.21
vector 중복 제거  (0) 2020.06.15