Home
jimin's blog
Cancel

프로그래머스(네트워크)

첫 시도 dfs를 이용하여 연결된 네트워크를 전부 순회, 순회되지 않은 네트위크를 발견할 때 마다 answer 증가 check를 만들어 이미 방문한 네트워크인지 확인 & i와 j가 같으면 본인 네트워크이므로 다를때만 통과 n이 200이라 n^3까지 가능 간단한 dfs문제 해결 import org.junit.jupiter....

프로그래머스(게임 맵 최단거리)

첫 시도 dfs로 풀 수 있을 것 같았는데 bfs가 더 효율적일 것 같아 bfs로 해결 bfs로 순회 시 목적지에 먼저 도착하는 거리가 필연적으로 최소값 목적지에 도착하지 못한다면 return -1 가독성을 위해 class를 만들어 순회했지만 효율성 측면에서 별로인지 효율성 테스트 실패 class가 아닌 배열로 bfs 구현 해...

20181(꿈틀꿈틀 호석 애벌레 - 효율성)

첫 시도 N이 100,000이라 완전탐색으로는 구현 불가능 K가 10^8이라 만족도의 합이 int 범위를 넘어갈 확률이 높으므로 long 사용 dp로 구현해보려고 했으나 실패 해결 dp와 투포인터를 결합하여 해결 left와 right로 범위를 만들고 범위 안 만족도의 합이 K를 넘어가면 left를 오른쪽으로 이동시키며 나뭇...

19941(햄버거 분배)

첫 시도 시간제한이 0.5초 -> 5 * 10^7 N이 2 * 10^4, K는 10이지만 왼쪽으로 10칸 또는 오른쪽으로 10칸이므로 20 O(N(2K)) -> 4 * 10^5 이므로 완전탐색으로 충분히 해결 가능 백트래킹으로 구현 시도 해결 굳이 백트래킹으로 구현 하지 않아도 그리디하게 가장 왼쪽의 햄버거를 먹...

10845번(큐)

첫 시도 java에서 큐는 리스트로 구현되어 있다 LinkedList를 사용해서 구현 해결 import java.io.*; import java.lang.reflect.Array; import java.util.*; public class Main { public static void main(String[] ars) thro...

10828번(스택)

첫 시도 스택은 다음을 사용하여 구현할 수 있다. 배열 리스트 배열을 이용하여 구현하였다. 해결 import java.io.*; import java.lang.reflect.Array; import java.util.*; public class Main { public static ...

10866번(덱)

첫 시도 단순히 Queue를 만들었을때처럼 단일(단방향) 연결리스트로 시도 pop_back을 할 때 tail의 data를 반환하고 tail의 이전노드를 tail로 만들어줘야 하는데 tail의 이전노드 정보가 없음 단일 연결리스트로 만들게 된다면 끝 노드를 찾기 위해 모든 노드를 거쳐가야 하므로 O(n) 따라서 이전 노드정보를 가지고 ...

1181번(단어정렬)

첫 시도 조건 단어의 길이 단어의 사전 순 시간제한은 2초, N = 2 * 10^4이므로 N^2으로 해결하기에는 시간이 아슬아슬 Collections.sort로 조건을 설정해 정렬 → O(N+nlogn) HashSet을 사용해 중복을 제거하려 했지만 클래스를 원소로 사용하게 되면 인스턴스 ...

10814번(나이순 정렬)

첫 시도 조건 나이가 어린 순 먼저 가입한 순 Person 클래스를 생성하고 이를 원소로 하는 LinkedList 생성 Person에 Comparable을 implements해 compareTo 구현, Collections.sort로 정렬 N = 100000, 시간 제한 3초 → 2N + ...

21773번(가희와 프로세스1)

첫 시도 시간복잡도를 계산하지 않고 완전탐색으로 시도 우선순위가 가장 높은 프로세스를 실행하고 나머지 프로세스들의 값 변경 Collections.sort로 우선순위에 맞게 정렬 시간복잡도가 T * n = 10^11이므로 시간초과 해결 우선순위 큐 사용 java에서 우선순위 큐를 사용해보지 않아 이번기회에 공부 imp...