FickleBoBo

[BaekJoon] 5052번 - 전화번호 목록 [Java][C++]

문제 링크 1. 문제 풀이 전화번호 목록의 일관성 여부를 판단하는 문제로 일관성이 없는 목록은 한 번호가 다른 번호의 접두어가 되는 경우다. 접두어를 통해 판단한다는 점에서 트라이 자료구조를 활용했는데 삽입 과정에서 다음 노드로 이동할 때 이미 삽입한 번호의 마지막 노드를 방문하면 새로 삽입하는 번호가 해당 번호의 접두어가 되므로 삽입에 실...

[BaekJoon] 14426번 - 접두사 찾기 [Java][C++]

문제 링크 1. 문제 풀이 집합 $S$ 에 포함된 $N$ 개의 문자열이 주어지고 이후 $M$ 개의 검사해야 하는 문자열이 주어진다. 검사해야 하는 각 문자열은 해당 문자열이 집합 $S$ 에 포함된 문자열 중 하나의 접두사가 되는지 카운팅을 해줘야 한다. 간단하게는 집합 $S$ 에 포함되는 $N$ 개의 문자열에 대해 각 문자열의 모든 접두사...

[BaekJoon] 27964번 - 콰트로치즈피자 [Java][C++]

문제 링크 1. 아이디어 콰트로치즈피자는 서로 다른 네 종류의 치즈 토핑이 들어가야 하며 치즈 토핑은 이름이 Cheese로 끝난다. 서로 다른 네 종류 이상의 치즈 토핑이 있는지 판단해야 하므로 집합 자료구조를 활용해서 이름이 Cheese로 끝나는 토핑들을 담은 후 집합의 크기가 4 이상인지 구하면 해결할 수 있다. 2. 코드 1...

[BaekJoon] 9202번 - Boggle [Java][C++]

문제 링크 1. 문제 풀이 단어 사전에 들어있는 단어들이 주어진 후 여러 개의 Boggle 보드들이 주어진다. 각 보드에서 얻을 수 있는 최대 점수, 가장 긴 단어, 찾은 단어의 개수를 구해야 하는데 트라이 자료구조를 활용하면 해결할 수 있다. 먼저 단어 사전의 단어들로 트라이를 생성한다. 이때 Boggle에서 단어 사전에 등재되었는지 여...

[BaekJoon] 5670번 - 휴대폰 자판 [Java][C++]

문제 링크 1. 문제 풀이 자동 입력 기능을 구현할 때 전체 단어에 대한 평균 입력 횟수를 구해야 하는 문제로 트라이 자료구조를 활용하면 해결할 수 있다. 단어의 끝 여부와 자식 노드의 수를 저장하는 트라이에 각 단어들을 삽입한 후 DFS를 돌면 되는데 버튼을 눌러야 하는 순간은 현재 노드가 루트일 때나 현재 노드가 단어의 끝일 때, 또는 ...

[BaekJoon] 16934번 - 게임 닉네임 [Java][C++]

문제 링크 1. 문제 풀이 각 유저의 별칭을 찾는 문제로 별칭은 이전에 가입한 닉네임의 접두사가 아니면서 가장 짧아야하며 가능한 별칭이 없으면 같은 닉네임으로 가입한 사람의 수를 기반으로 지어야 한다. 트라이 자료구조를 활용해 해당 닉네임에 대해 검색 후 삽입으로 처리하면 되며 검색에서는 다음 노드가 존재하지 않는 순간 지금까지 방문한 노드...

[BaekJoon] 16906번 - 욱제어 [Java][C++]

문제 링크 1. 문제 풀이 주어진 단어들로 욱제어 단어를 모두 만들 수 있으면 욱제어 단어를 순서대로 출력하는 문제로 욱제어는 서로 접두어가 되는 관계가 없는 단어들이어야 한다. 트라이 자료구조를 활용하면 해결할 수 있는데 트라이에 해당 DFS로 해당 길이의 단어가 들어갈 수 있는 곳을 탐색하면 되며 한번이라도 새로운 노드를 만들었으면 접두...

[BaekJoon] 14725번 - 개미굴 [Java][C++]

문제 링크 1. 문제 풀이 로봇 개미로 개미굴을 탐사한 결과를 출력하는 문제로 탐사는 문자열의 사전순으로 DFS 스타일로 탐사를 해야한다. 주어진 개미굴을 트라이 자료구조를 활용해서 저장하면 해결할 수 있는데 각 노드가 문자 하나가 아닌 단어를 저장하는 방식으로 하면 된다. 이를 위해 트리맵 배열을 활용해서 배열 인덱스에 노드 번호, 트리맵...