java 354

[백준] 9466번. 텀 프로젝트(JAVA)

문제https://www.acmicpc.net/problem/9466풀이import java.io.*;import java.util.*;public class Main{ static int T; static int check; static Set team; // 팀원들의 집합 static Stack stack; // 팀원을 추가하기 위한 스택 static List list; // 임시 저장을 위한 리스트 static int[] arr; // 학생들이 누구랑 팀원이 되고 싶은지 static boolean[] visited; // 이미 학생을 체크했는지 static boolean flag; // 팀 구성이 완료되었는지 public static void main..

[백준] 16953번. A -> B(JAVA)

문제https://www.acmicpc.net/problem/16953풀이import java.io.*;import java.util.*;public class Main { static long a, b; // 범위가 10^9이기에 long 으로 받음 static int cnt = Integer.MAX_VALUE; // 최솟값을 찾기 위함이므로 제일 큰 값으로 저장 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; st = new..

[도구정리] 투포인터

투포인터란? 인덱스를 두 개로 두어 O(N^2)이 될 수 있는 탐색을 O(N)으로 만들어주는 것이다.예를 들어보자. 연속된 숫자가 존재하는 배열(1,2,3,4,5,1,2,3,4,5,) 같이 존재한다. 이때 연속된 수열의 합을 구하여 원하는 숫자가 나올 수 있는 경우의 수를 구하는 문제이다.투포인터를 쓰지 않는다면 원하는 숙자가 15일 때, 1 + 2 + 3 + 4 + 5를 하고 정답!을 찾은 다음 2, 2 + 3, 2 + 3 + 4 이런 식으로 또 찾아야 한다는 문제가 생긴다는 것이다. 즉, 인덱스의 시작 지점과 끝지점 같이 저장해 두면 편한 정보를 두 가지로 나누어 저장함으로써 답을 효율적으로 찾는 알고리즘이다. 코드를 함께 보자.int start = 0, end = 0, sum = 0, answer ..