2025/08/01 3

(매일 BOJ) C++ 14425번 문자열 집합

이번 문제는 14425번 문자열 집합이다.접근법문자열을 빠르게 검색할 수 있는 자료구조가 필요함 > 중복이 없고, 정렬된 상태를 유지하는 set 사용각 문자열을 탐색할 때는 s.find(str)을 사용하면 O(log N) 시간 내 탐색 가능작성코드#include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(0); int N,M; cin >> N >> M; set s; for(int i = 0; i > str; s.insert(str); } int count = 0; for(int i = 0; i > str; if (s.find(str) != s.end(..

매일 BOJ 2025.08.01

(매일 BOJ) C++ 18870번 좌표압축

이번 문제는 18870번 좌표압축이다.문제 설명N개의 정수가 주어진다. 각 정수에 대해, 해당 값보다 작은 서로 다른 값의 개수를 출력하라.즉, 배열 내 모든 값을 0부터 시작하는 순위(rank)로 압축한 결과를 출력하면 된다.단, 입력되는 정수의 범위는 최대 ±10⁹이므로, 단순하게 배열로 인덱싱할 수 없다.따라서 좌표 압축(Coordinate Compression) 기법을 사용한다.접근법 핵심 아이디어값 자체가 아니라 값의 상대적인 순서만 중요하다.중복된 값은 같은 압축값을 가져야 한다.압축값은 해당 값이 정렬된 배열에서 몇 번째에 위치하는지로 정의된다. 좌표 압축 알고리즘 (O(N log N))원본 배열을 복사하고 정렬한다.정렬된 배열에서 중복을 제거한다.각 원소의 값을 압축된 순위로 매핑한다...

매일 BOJ 2025.08.01

(매일 BOJ) C++ 1620번 나는야 포켓몬 마스터 이다솜

이번 문제는 1620번 나는야 포켓몬 마스터 이다솜이다. 접근법포켓몬 이름을 입력받으며:번호 → 이름 저장: vector v[N+1]이름 → 번호 저장: unordered_map m쿼리를 읽고:쿼리가 숫자인지 확인 (all_of(s.begin(), s.end(), isdigit))숫자면 v[번호] 출력문자열이면 m[이름] 출력 이름 → 번호unordered_mapO(1) 평균해시 기반 빠른 조회번호 → 이름vector (1-based)O(1)인덱스 직접 접근작성코드#include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(0); int N,M; cin >> N >> M; vector v; u..

매일 BOJ 2025.08.01