FickleBoBo

[백준] 14428번 - 수열과 쿼리 16 [Java][C++]

문제 링크 1. 문제 풀이 수열의 크기 $N$ 이 최대 $100,000$, 특정 원소의 값을 변경하거나 구간 내 최솟값의 인덱스를 구하는 쿼리의 수 $M$ 이 최대 $100,000$ 인 문제로 구간 쿼리와 점 갱신을 효율적으로 처리할 수 있는 세그먼트 트리를 활용하면 해결할 수 있다. 다만 구간 내 최솟값이 아니라 최솟값의 인덱스를 구해야 하는...

[백준] 12899번 - 데이터 구조 [Java][C++]

문제 링크 1. 문제 풀이 데이터베이스 $S$ 에 특정 자연수 $X$ 를 추가하거나 $X$ 번째로 작은 수를 응답하고 그 수를 삭제하는 쿼리를 처리하는 문제로 숫자별 등장 횟수를 저장한 세그먼트 트리를 활용하면 해결할 수 있다. 이때 같은 수가 여러 번 추가될 수 있음에 주의해야 한다. $k$ 번째 수를 구하는 전형적인 세그먼트 트리 유형의 ...

[백준] 11478번 - 서로 다른 부분 문자열의 개수 [Java][C++]

문제 링크 1. 문제 풀이 문자열 $S$ 의 서로 다른 부분 문자열의 개수를 구하는 문제로 중복을 제거할 수 있는 집합 자료구조와 부분 문자열을 생성할 수 있는 함수나 메서드를 활용하면 간단하게 해결할 수 있다. 2. 코드 1. 해시를 사용한 집합과 맵 [Java] substring 메서드로 시작 인덱스와 끝 인덱스를 넣어서 부분 문자...

[백준] 10982번 - 행운쿠키 제작소 [Java][C++]

문제 링크 1. 문제 풀이 각각의 반죽들에 대해 오븐 1에서 굽는 경우랑 오븐 2에서 굽는 경우랑 걸리는 시간이 다른데 전체 반죽을 굽는데 걸리는 최소 시간을 구해야 하는 문제다. 배낭 문제를 활용하면 이 문제를 해결할 수 있는데 배낭의 용량을 오븐 1에서 굽는 데 쓸 수 있는 최대 시간으로 했을 때, 배낭의 가치를 오븐 2에서 굽는 데 걸리는...