BOJ
-
[BOJ] 2468번 : 안정영역 (JAVA)BOJ 2024. 12. 10. 17:56
간만에 알고리즘 타임저번에 풀었던 문제인데 그냥 복습할 겸 다시 풀어봤는디 저번이랑 풀이가 다르다. 신기한 내 머릿속https://www.acmicpc.net/problem/2468 정말 간단한 문제다. 높이를 확인해서 해당 높이보다 큰 지점은 안정영역이다. 해당 지점의 영역 개수의 최대를 구하는 문제. 1. 우선 dfs를 활용한다. (보통 저렇게 영역을 구하는 문제는 dfs를 활용하는 것이 좋다. 연결된 부분을 다 체크하고 돌아오기 땜시) // 안전한 영역의 최대 개수static void dfs(int x, int y, int n) { visited[x][y] = true; for(int i=0;i=0 && nx=0 && nyn) { visited[nx][ny]=t..
-
[BOJ] 1991번 : 트리 순회BOJ 2024. 6. 8. 17:24
https://www.acmicpc.net/problem/1991 순회만 하는것이 아니라 node를 직접 만들어서 풀어야한다.node를 어떻게 연결 지어서 만들어야할까 고민하다가 node 만드는 부분을 답을 봤다...ㅠstatic Node head = new Node("A", null, null); 문제에서는 "항상 A가 루트 노드가 된다" 라고 명시되어 있다.그래서 처음에 head는 "A"로 해두고, 입력을 받을 때 마다 insert 해주었다.for(int i=0;i 만약에 root (A) 랑 같다면 새로운 node를 생성해주고, 다르다면 A 노드의 자식 노드일 것이다.그러므로 입력받은 값에 따라 삽입해주면 된다.static void insertNode(Node node, String root, S..
-
[SWEA] 17136번 : 색종이 붙이기BOJ 2024. 5. 18. 23:47
진짜 참 어렵다....왜 이걸 푼다고 하필 오늘...결국 답을 봤고,,,이해하고 나서 내 코드로 바꿔보려고 했는데 실-패 ㅠㅠhttps://www.acmicpc.net/problem/17136 결국 풀이를 생각해내지 못해서, 아래 블로그를 참고했다!!https://steady-coding.tistory.com/43 [BOJ] 백준 17136번 : 색종이 붙이기 (JAVA) steady-coding.tistory.com 이건 어떻게 풀었냐?!x, y를 하나씩 증가 시키면서 p 배열에 사용할 수 있는 종이 개수를 담아둔다.첫번째. 붙일 수 있는지 체크하고두번째. 붙이는 게 가능하다면 붙이면 된다.만약에 붙일 수 없으면 그냥 함수를 나와버린다.여기서 dfs 를 돌려서 끝점에 도달하면 그때 최소값을 구하고,..
-
[BOJ] 2644번 : 촌수계산BOJ 2024. 5. 12. 21:58
https://www.acmicpc.net/problem/2644간단한 dfs/bfs 문제난 bfs로 풀었다...원래 List로 자주 풀었는데, 이번에는 인접행렬로 풀었다.왜냐. A형에 인접행렬이 나왔어서 그냥 글케 해따. 히히 public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); // 전체 사람 수 ..
-
[Java] 1389번 : 케빈 베이컨의 6단계 법칙BOJ 2024. 2. 12. 21:13
https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 진짜 도대체 언제푼건데 이걸 이제 쓰님,,,? 이래서 원래 하자마자 미루지말아야햐 이 문제는 간단한 bfs 문제였다. 시작 지점을 기준으로 depth를 다 더했을 때 가장 작은 값인 기준을 출력해주면 된다. 말이 이상하지만 그림을 보면 엉망진창 그림이지만 빨간색을 봐보쟝,,,! 저렇게 시작 지점을 기준으로 depth를 다 더해서 그 depth가 최소..
-
[Java] 17471번 : 게리맨더링BOJ 2024. 2. 2. 01:24
https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net 지옥불맛 게리맨더링 진짜 다 패버려 결국 이겨줬다. 내가 패줬다 왜 이렇게 제출이많냐고? 처음 풀 때 도움을 너무 많이 받아서,,, 코드 정리를 싸악 하다보니까 필요없는 코드가 너무 많아가지고 정리하다보니 제출 수가 늘어났다,,,그리고 다시 풀다보니 그냥 게리맨더링 패버린 사람됐다. [풀이방법] 나는 조합과 bfs 를 활용해서 풀었다. 문제를 보면, 무조건 2팀으로 나누어야하고, 그 팀이 연결되어 있음을 확인해야 했기..
-
[Java] 2583번 : 영역 구하기BOJ 2024. 1. 30. 23:22
https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 저번에 풀었던 문제였는데, 그때 어떻게 풀었더라,,,쨋든 c++로 풀려있더라,,,ㅎ Java로 다시 풀었다,,,! 음 풀면서 느낀건데, 이전보다는 그나마 실력이 늘긴 한듯 싶었다. 나는 dfs로 풀이했다. 보통 이런 컴포넌트 구하는 거는 dfs 로 접근하는것같다. public static int dfs(int y, int x) { int cnt=1; visited[y][x] =..
-
[Java] 1697번 : 숨바꼭질BOJ 2024. 1. 30. 20:17
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net BFS로 푸는건 알았는데, 어떻게 풀어야할지를 몰라가지고, 사실 답을 보고 이해하는 방식으로 풀었다! 누군진 몰라도 고마워요 https://velog.io/@leeinae/Algorithm-%EB%B0%B1%EC%A4%801697-%EC%88%A8%EB%B0%94%EA%BC%AD%EC%A7%88 [Algorithm] 백준_1697 숨바꼭질 JAVA 수빈이의 위치가 N(0..