Algorithm/λ¬Έμ œν’€μ΄

[λ°±μ€€] 15719번 - μ€‘λ³΅λœ 숫자 (C++)

moaoh 2023. 8. 31. 23:19

 

15719번: μ€‘λ³΅λœ 숫자

1λΆ€ν„° N - 1κΉŒμ§€μ˜ μ •μˆ˜κ°€ ν•˜λ‚˜μ”© μ •λ ¬λ˜μ§€ μ•Šμ€ μ±„λ‘œ μ €μž₯λ˜μ–΄ μžˆλŠ” μ–΄λ–€ μˆ˜μ—΄ Aκ°€ μžˆλ‹€. μˆ˜μ—΄ A에 μž„μ˜μ˜ μ •μˆ˜ M(1 ≤ M ≤ N – 1)을 λ„£μ–΄ 크기가 N인 μˆ˜μ—΄λ‘œ λ§Œλ“€μ—ˆμ„ λ•Œ, μž„μ˜μ˜ μ •μˆ˜ M을 μ°ΎλŠ” ν”„

www.acmicpc.net

 

문제

1λΆ€ν„° N - 1κΉŒμ§€μ˜ μ •μˆ˜κ°€ ν•˜λ‚˜μ”© μ •λ ¬λ˜μ§€ μ•Šμ€ μ±„λ‘œ μ €μž₯λ˜μ–΄ μžˆλŠ” μ–΄λ–€ μˆ˜μ—΄ Aκ°€ μžˆλ‹€. μˆ˜μ—΄ A에 μž„μ˜μ˜ μ •μˆ˜ M(1 ≤ M ≤ N – 1)을 λ„£μ–΄ 크기가 N인 μˆ˜μ—΄λ‘œ λ§Œλ“€μ—ˆμ„ λ•Œ, μž„μ˜μ˜ μ •μˆ˜ M을 μ°ΎλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ.

 

μž…λ ₯

첫째 쀄에 μˆ˜μ—΄μ˜ 크기 N(2 ≤ N ≤ 10,000,000)이 μ£Όμ–΄μ§„λ‹€.

λ‘˜μ§Έ 쀄에 μˆ˜μ—΄ A의 μ›μ†ŒμΈ N개의 μ •μˆ˜κ°€ μ£Όμ–΄μ§„λ‹€. μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” λͺ¨λ‘ 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , N-1보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄λ©° 문제의 닡인 M을 μ œμ™Έν•˜κ³ λŠ” λͺ¨λ‘ μ„œλ‘œ λ‹€λ₯Έ μ •μˆ˜μ΄λ‹€.

 

 

좜λ ₯

M을 좜λ ₯ν•˜λΌ.

 

 

풀이과정

λ“€μ–΄μ˜€λŠ” μž…λ ₯κ°’μ˜ λ²”μœ„κ°€ 10,000,000κΉŒμ§€λ‘œ μƒλ‹Ήνžˆ 넓은 λ²”μœ„λ₯Ό κ°€μ§€κ³  μžˆμ–΄μ„œ μ‹œκ°„μ΄ˆκ³Ό 및 λ©”λͺ¨λ¦¬μ΄ˆκ³Όλ₯Ό μ‹ κ²½μ¨μ€˜μ•Όν•˜λŠ” λ¬Έμ œμ˜€μ—ˆλ‹€.

map을 μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„ν•˜κ±°λ‚˜ int배열을 μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„μ„ ν–ˆμ—ˆλŠ”λ° μ‹œκ°„μ΄ˆκ³Όκ°€ λ°œμƒμ΄ λ˜μ–΄ boolν˜•νƒœμ˜ 배열을 μ‚¬μš©ν•˜μ˜€λ‹€.

 

code

#include <iostream>

bool	arr[10000001];

int	main(void)
{
	std::ios_base :: sync_with_stdio(false); 
	std::cin.tie(NULL); 
	std::cout.tie(NULL);

	int n, temp;

	std::cin >> n;
	for (int i = 0; i < n; i++) {
		std::cin >> temp;
		if (!arr[temp]) arr[temp] = true;
		else {
			std::cout << temp << "\n";
			return (0);
		}
	}
	return (0);
}

 

ν›„κΈ°

intλ°°μ—΄κ³Ό bool 배열이 μ„œλ‘œ μ‹œκ°„λ³΅μž‘λ„μ—μ„œ 차이가 μƒκΈ΄λ‹€λŠ” 것을 처음 μ•Œκ²Œλ˜μ—ˆλ‹€.

λ‘˜ λ‹€ μ‚¬μš©κ°€λŠ₯ν•œ 문제라면 bool ν˜•νƒœμ˜ λ°°μ—΄ μ‚¬μš©ν•˜κΈ°.