성장일기

내가 보려고 정리하는 공부기록

2025/02 3

[백준] 13334: 철로 (우선순위 큐 활용하기) - JAVA

class 6https://www.acmicpc.net/problem/13334   # 문제  # 필요개념배열에 담아서 정렬하면 편한 문제겠지만 시간이 1초라서 O(n^2) 가 되면 시간초과가 발생한다. 혹시나 해봤지만 역시나이니 시도하지 않아도 된다. 이렇게 일정 간격을 순회해야 할 경우 투포인터를 응용하여 문제를 풀 수 있다. 이 문제는 일정 간격(dis) 안에 집과 회사가 모두 들어있는 루트의 개수를 구해야 하는 문제이다. 푸는 기본적인 로직은 다음과 같다.입력받은 수를 저장할 이차원 배열과 실제 문제풀이에 이용할 리스트를 각각 생성한다.숫자 두개를 입력받되, 작은 것을 집, 큰 것을 회사라고 가정한다. 입력을 받을 때 작은 숫자가 앞에 오지 않는 경우도 있기 때문에 애초에 배열에 저장할 때 min..

[백준] 14725: 개미굴 (트리) - JAVA

class 6https://www.acmicpc.net/problem/14725   # 문제# 필요개념이 문제는 결론적으로 노드들의 깊이를 오름차순으로 도출해야하는 문제이기 때문에 dfs를 사용하였다. 평소 그래프 문제를 풀 때에는 이중 리스트를 만들어 풀었지만, 이 문제는 이름이 같은 노드가 존재할 수 있고, 깊이라는 개념이 도입되기 때문에 이중리스트로 풀지 않았다.  A노드의 자식노드인 B노드에게 C라는 자식노드가 존재한다고 가정할 때, A노드에게 C라는 자식노드가 있을 수 있다. 이 두 노드는 이름만 같을 뿐, 아예 다른 노드이기 때문에 그래프문제처럼 풀면 안 된다. Node라는 클래스를 만들고, 여기에 자신의 값과 children을 넣어주었다. children에 값을 추가하는 것은 별도의 메소드 ..

[백준] 7569: 토마토 (3차원 그래프탐색, bfs) - JAVA

알고리즘 분류 (그래프 탐색)https://www.acmicpc.net/problem/7569   # 문제 # 필요개념지금까지 했던 2차원 배열 탐색과 달리, 토마토가 들어있는 3차원 상자를 탐색해야 한다. 그래서 삼차원 배열을 생성해주었다. 지금까지 BFS로 그래프탐색을 할 때 방문 여부를 확인하는 isVisit 배열을 생성했었는데, 이 문제는 애초에 전체 토마토를 익게 할 수 있는 "시간" 을 물어보고 있기 때문에, 시간을 넣어줄 배열(map)을 생성해주었다. 토마토 입력이 0인 자리에 초기값을 -1로 설정해주어서 -1이면 방문하지 않은 곳임을 알 수 있도록 했다. 모든 익은 토마토들은 동시에 주변을 익게 만들기 때문에, 입력이 1인 토마토들을 일단 모두 Queue에 담고, 다 담은 후에 bfs 탐색..

728x90