πŸ“ Coding Test Study/C++

[10μ£Ό μ™„μ„± C++ μ½”λ”©ν…ŒμŠ€νŠΈ] ν•„μˆ˜κ°œλ… - map, unique()

ibelieveinme 2023. 8. 6. 09:15
728x90

μ½”λ”©ν…ŒμŠ€νŠΈμ—μ„œ μ€‘λ³΅μ—†λŠ” 값을 좜λ ₯ν•˜λΌκ³  ν•  λ•Œ, map μ΄λ‚˜ unique ν•¨μˆ˜λ₯Ό μ΄μš©ν•œλ‹€.

 

1. map

#include <iostream>
#include <map>
#include <vector>
using namespace std;

map<int, int> mp;

int main() {
	vector<int> v{ 1,1,2,2,3,3 };
	for (int i : v) {
		if (mp[i]) continue;
		else mp[i] = 1;
	}
	vector<int> ret;
	for (auto it : mp) {
		ret.push_back(it.first);
	}
	for (int i : ret) cout << i << '\n';
}

 

2. unique()

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> v;

int main() {
	for (int i = 1; i <= 5; i++){
		v.push_back(i);
		v.push_back(i);
	}
	for (int i : v) cout << i << " ";
	cout << '\n';

	// μ€‘λ³΅λ˜μ§€ μ•Šμ€ μš”μ†Œλ‘œ μ±„μš΄ ν›„, κ·Έ λ‹€μŒ μ΄ν„°λ ˆμ΄ν„°λ₯Ό λ°˜ν™˜ν•œλ‹€.
	auto it = unique(v.begin(), v.end());
	cout << it - v.begin() << '\n';

	// μ•žμ—μ„œ λΆ€ν„° μ€‘λ³΅λ˜μ§€ μ•Šκ²Œ μ±„μš΄ ν›„ λ‚˜λ¨Έμ§€ μš”μ†Œλ“€μ€ κ·ΈλŒ€λ‘œ λ‘”λ‹€.
	for (int i : v) cout << i << " ";
	cout << '\n';

	//unique()의 iteratorμ—μ„œ 벑터 λκΉŒμ§€λ₯Ό erase()둜 μ§€μ›Œμ£Όλ©΄ λœλ‹€.
	v.erase(it, v.end());
	for (int i : v) cout << i << " ";
	cout << '\n';

	return 0;
}

1 1 2 2 3 3 4 4 5 5
5
1 2 3 4 5 3 4 4 5 5
1 2 3 4 5

 

* unique(): λ²”μœ„ μ•ˆμ— μš”μ†Œ 쀑 μ—°μ†λœ μš”μ†Œλ₯Ό μ§€μš°κ³  λ‚˜λ¨Έμ§€ μš”μ†Œλ“€μ€ μ‚­μ œν•˜μ§€ μ•Šκ³  κ·ΈλŒ€λ‘œ λ‘λŠ” ν•¨μˆ˜.

                   O(n)의 μ‹œκ°„λ³΅μž‘λ„λ₯Ό 가짐.

 

즉, unique() 둜 μ€‘λ³΅λœ μš”μ†Œλ₯Ό μ°Ύμ•„μ„œ μ •λ ¬ν•˜κ³  찾은곳 λ’€λΆ€ν„° λκΉŒμ§€λ₯Ό erase() ν•˜λ©΄ μ€‘λ³΅λœ μš”μ†Œκ°€ μ œκ±°λœλ‹€.

이 λ•Œ, λ‚˜λ¨Έμ§€ μš”μ†Œλ“€μ€ μ‚­μ œν•˜μ§€ μ•Šκ³  κ·ΈλŒ€λ‘œ 두기 λ•Œλ¬Έμ— sort() λ₯Ό λ¨Όμ € ν•˜κ³  ν•˜λ©΄ μ€‘λ³΅λœ 수λ₯Ό λͺ¨λ‘ μ œκ±°ν•œ 배열이 λ‚˜μ˜¨λ‹€.


* hash map μ°Έκ³  문제 및 ν™œμš©μ˜ˆμ‹œ

https://i-believe-in-me.tistory.com/224

 

[C++][Programmers][ν•΄μ‹œ] 포켓λͺ¬

https://school.programmers.co.kr/learn/courses/30/lessons/1845 ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ”

i-believe-in-me.tistory.com

포켓λͺ¬μ„ 2/n 개 μ„ νƒν–ˆμ„ λ•Œ, 선택할 수 μžˆλŠ” 포켓λͺ¬ μ’…λ₯˜μ˜ μ΅œλŒ€κ°’μ„ ꡬ해야 ν•˜λ―€λ‘œ 포켓λͺ¬ μ’…λ₯˜λ³„λ‘œ count ν•  hash map이 ν•„μš”ν•˜λ‹€.

 

* unique(), erase() μ°Έκ³  문제 및 ν™œμš©μ˜ˆμ‹œ

https://i-believe-in-me.tistory.com/229

 

[C++][Programmers][μŠ€νƒ/큐] 같은 μˆ«μžλŠ” μ‹«μ–΄

*문제 https://school.programmers.co.kr/learn/courses/30/lessons/12906 ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이

i-believe-in-me.tistory.com

λ‹¨μˆœνžˆ μ—°μ†λœ 숫자λ₯Ό μ§€μš°λ©΄ λ˜λŠ” λ¬Έμ œμ΄λ―€λ‘œ unique(), erase() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ λœλ‹€.

728x90