본문 바로가기

자바50

[백준 12904] A와 B / 자바 / 그리드 문제         레벨: G4알고리즘: 그리드 풀이시간: 30분힌트 참조 유무: 무https://www.acmicpc.net/problem/129041 번째 시도   [로직 설명]T에 룰을 거꾸로 적용해서 하나씩 빼주고 마지막에 비교한다.[배운점]String 함수 되짚기import org.w3c.dom.Node;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOException .. 2024. 6. 23.
[백준 1744] 수 묶기 / 자바 / 그리디 문제         레벨: G4알고리즘: 그리디 풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/17441 번째 시도   [아이디어]정렬된 마이너스 배열정렬된 플러스 배열마이너스 x 마이너스 후 정답에 더하기플러스 x 플러스 후 정답에 더하기+ 예외생각) 1x1보다는 +1+1이 더 높으니 현재 숫자가 1일때는 다음 숫자가 1인지 검사하기import java.io.*;import java.util.*;public class Main { static int N; //양수 관련 값 저장, 내림차순 정렬 static PriorityQueue plus = new PriorityQueue(Comparator.reverseOrder()); //음수 관.. 2024. 6. 22.
[백준 17928] 오큰수 / 자바 / 스택 문제         레벨: G4알고리즘: 스택 풀이시간: 3:41힌트 참조 유무:https://www.acmicpc.net/problem/172981 번째 시도   이 문제는 이중 for문으로 하면 쉽게 풀 수 있지만 1,000,000 x  1,000,000이니 반드시 시간초과가 난다. 스택이 비어있지 않으면서 현재 원소가 스택의 맨 위 원소가 가리키는 원소보다 큰 경우  해당 조건을 만족할 때 까지 stack의 원소를 pop하면서  해당 인덱스의 값을 현재 원소로 바꿔준다.  배열을 다 순회했다면  스택의 모든 원소를 pop하면서 해당 인덱스의 value를   -1로 초기화한다.  import java.io.BufferedReader;import java.io.InputStreamReader;impor.. 2024. 6. 21.
[백준 1967] 트리의 지름 / 자바 / DFS 문제         레벨: G4알고리즘: DFS풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/19671 번째 시도: 실패    [깨달은 점]dfs는 리턴값이 void이고 전역변수를 고치는 게 구현하기 편함 리턴값이 int면 구현하기 까다로움[알고리즘 설명]지름의 중심점이 될 수 있는 노드는 자식을 2개 가지고 있는 노드이다.그래서 중심점이 될 수 있는 노드들을 dfs하며 답을 업데이트해간다.dfs는 루트노드에서 양갈래로 찢어져 가장 각각 가장 긴 길을 구한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayL.. 2024. 6. 20.
[백준 11723] 집합 / 자바 / 비트마스킹 문제         레벨: S5알고리즘: 비트마스킹풀이시간: 20분힌트 참조 유무: 유https://www.acmicpc.net/problem/11723 1 번째 시도    [비트마스킹]모든 자료형를 이진수로 표현하는 것. 더 빠른 시간과, 더 적은 메모리 사용[비트 연산자]a&b   a와b 둘다 1이어야 1a|b    a와b 둘 중 하나라도 1이면 1a^b   a와b가 다르다면 1~a    0 -> 1,  1 -> 0aa>>b     b비트만큼 우측으로 자리이동[집합의 표현]비트의 각 자리수1: 존재한다.0: 존재하지 않는다.즉 아래와 같다.{A,B,C,D,E,F}{A} = 100000{A,F} = 100001 [로직 설명]boolean배열로도 원소가 있다 없다를 표시할 순 있지만, 메모리 제한이 생긴.. 2024. 6. 20.
[백준 1987] 알파벳 / 자바 / 백트래킹 문제         레벨: G4알고리즘: 백트래킹풀이시간: 30분힌트 참조 유무: 무https://www.acmicpc.net/problem/19871 번째 시도   백트래킹 기본적인 문제굳이 설명을 적지 않겠다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;public class Main { static int ans = Integer.MIN_VALUE; static boolean[][] visited; static int[] dx = {1,0,0,-1}; static int[].. 2024. 6. 19.
[백준 2407] 두 용액 / 자바 / 투 포인터 문제         레벨: G5알고리즘: 투 포인터 풀이시간: 40분힌트 참조 유무: 무https://www.acmicpc.net/problem/24701 번째 시도   [로직 설명]1. 입력받은 숫자를 오름차순으로 정렬한다.2. sum 값을 비교해가면 start, end  두 포인터를 조절해간다.3. 종료조건은 start가 end 같거나 클 때이다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOException { .. 2024. 6. 17.
[백준 1644] 소수의 연속합 문제         레벨:  G3알고리즘: 투 포인터 +  에스토라테네스의 체 풀이시간: 1시간힌트 참조 유무: 유https://www.acmicpc.net/problem/16441 번째 시도 : 시간초과  [코드 설명]1. arr배열에 N이하의 소수들을 담는다.2. 소수들을 순회하며 while문 안의 내용을 반복한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Main { public static void main(String[] args) throws IOException { BufferedReader.. 2024. 6. 16.
[백준 11728] 배열 합치기 / 자바 /투 포인터 문제         레벨: S5알고리즘: 투 포인터풀이시간: 30분힌트 참조 유무: 무https://www.acmicpc.net/problem/117281 번째 시도    1. 두 개의 포인터가 각각의 패열 최근 원소 지목하기2. 포인터가 지정하는 값들 비교해서 작은 값 넣기 import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String.. 2024. 6. 14.