문제풀이/백준83 [JAVA] BOJ 백준 1707번 - 이분 그래프 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/1707 2. 내가 푼 방법 이분 그래프를 확인하는 방법으로 Integer 배열 자료형을 가지는 draw 변수를 선언한 다음에, 직접 연결 리스트를 따라가면서 인접한 정점이 다른 색을 가지는지 확인해 주었다. 놓치지 말아야 할 부분은 이미 draw 변수에 색이 칠해져 있다고 하더라도, 다시 trace 함수를 반복하면서 인접한 정점을 확인해주어야 하는 것이다. 이미 이분 그래프가 만들어질 수 없는 조건이라면 if (!result) break; 를 통해 빠져나오도록 했다. boolean result = true; Integer[] draw = new Integer[V+1]; for (int .. 2023. 5. 16. [JAVA] BOJ 백준 2660번 - 회장뽑기 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/2660 2. 내가 푼 방법 플로이드 와샬 알고리즘을 이용해 정점 v1과 v2 사이의 가중치를 구해줬다. 정점 v1에서 v2로 가는 최소 비용 vs 정점 v1에서 정점 x로 가는 비용 + 정점 x에서 정점 v2로 가는 비용 을 비교해 주면서 최소 가중치를 구할 수 있게 된다. for (int k = 1; k 2023. 5. 16. [JAVA] BOJ 백준 20366번 - 같이 눈사람 만들래? 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/20366 2. 내가 푼 방법 처음 시도한 방법은 투포인터 안에 투포인터를 시도했는데, 유사했으나 포인터를 이동하는 부분에서 통과할 수 없던 풀이였다. 따라서 통과한 풀이는 이중 for문을 통해 구간을 정하고, 그 안쪽 구간에서 투포인터를 돌리는 방법으로 해결했다. 바깥쪽 구간 : i ~ j 안쪽 구간 : innerStart ~ innerEnd int result = Integer.MAX_VALUE; for (int i = 0; i < N; i++) { for (int j = i+1; j < N; j++) { int innerStart = i+1; int innerEnd = j-1; in.. 2023. 5. 15. [JAVA] BOJ 백준 2461번 - 대표 선수 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/2461 2. 내가 푼 방법 분명 시간초과가 날 거 같은데 for문을 사용하는 거 밖에 생각이 안 나서, 투포인터 알고리즘이라는 것만 참고하고 풀었다. 입력받은 값을 한 줄에 정렬하고, 각각의 값이 몇 반인지를 알고 있기만 하면 투포인터를 사용할 수 있다. 아래는 반과 값을 담은 Tuple이라는 오브젝트를 List에 담아서 정렬하는 코드이다. List list = new ArrayList(); for (int i = 0; i < N; i++) { st = new StringTokenizer(br.readLine()); for (int j = 0; j < M; j++) { list.add(.. 2023. 5. 13. [JAVA] BOJ 백준 22862번 - 가장 긴 짝수 연속한 부분 수열 (large) 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/22862 22862번: 가장 긴 짝수 연속한 부분 수열 (large) 수열 $S$에서 최대 $K$번 원소를 삭제한 수열에서 짝수로 이루어져 있는 연속한 부분 수열 중 가장 긴 길이를 출력한다. www.acmicpc.net 2. 내가 푼 방법 start 변수와 end 변수를 이용한 투포인터 알고리즘을 이용했다. 핵심 코드는 아래와 같다. int result = 0; int deleteChance = 0; int start = 0; int end = 0; while (end < N) { if (arr[end] % 2 == 0) { result = Math.max(result, end - s.. 2023. 5. 13. [JAVA] BOJ 백준 13144번 - List of Unique Numbers 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/13144 13144번: List of Unique Numbers 길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라. www.acmicpc.net 2. 내가 푼 방법 메모리초과를 해결하지 못해서 다른 분의 코드를 이해한 후 풀었다. 같은 범위 내 속하는지 확인하는 boolean[] check 배열과 투포인터를 사용하여 문제를 해결했다. 연속한 n개 이상의 수를 뽑는 경우의 수 : n * (n+1) / 2 while 문의 조건을 end < N 을 기준으로 두고 싶었기 때문에 아래와 같은 시.. 2023. 5. 12. 이전 1 ··· 10 11 12 13 14 다음