목록Data Structure & Algorithm/PS - JAVA (270)
Dev.baelanche
매 케이스마다 상근이의 카드 한개를 비교할 카드 배열의 길이를 반으로 쪼개며 이분탐색한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; for(int i=0; i0) { int card = sc.nextInt(); int left = 0; int right = n-1; while(left + 1 < right) { int mid = (left + right)/2; if(a[mid]
컴퓨터를 10개씩 짜른다. 0번째 컴퓨터의 경우 10으로 출력하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while(t-->0) { int a = sc.nextInt(); int b = sc.nextInt(); int c = a % 10; for(int i=0; i
도착시간과 떠난시간 사이의 트럭 개수를 출력하여 맞는 요금을 부여하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int truck[][] = new int[3][2]; for(int i=0; i truck[2][1]) break; } System.out.println(cost); } }
야바위를 할때마다 자리를 스왑해주면된다. 공이 사라지는 경우는 없다;;;; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int a[] = new int[4]; a[1] = 1; while(m-->0) { int x = sc.nextInt(); int y = sc.nextInt(); swap(a, x, y); } for(int i=1; i
N*M 배열에서 테트로미노를 놓을 수 있는 경우를 모두 체크한다. 코드를 보면 구현방식을 아주 쉽게 알 수 있다. public class Main { static int a[][]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); a = new int[n][m]; ..
중복되지 않으면서 오름차순인 수열을 완전탐색한다. 빈 줄을 끼워넣는 것을 유의한다. public class Main { static int a[]; static int k; static boolean f = true; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; while(true) { st = new StringTokenizer(br.readLine()); k = Integer.parseInt(st.nextToken()); if(k == 0) break; a = new int[k..
수열을 q에 담아 K-1번째까지 pop, push를 하며 맨 뒤로 보내주고 K번째 수는 pop 한다. K번째에 pop된 순열을 출력한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int a[] = new int[n]; Queue q = new LinkedList(); for(int i=1; i
문자열에서 (, ), [, ] 말고는 신경쓰지 않는다. 1. (, [ 문자는 스택에 바로 담는다. 2. ) 문자는 스택의 top이 (이면 둘이 합쳐서 pop한다. 2-1. ] 문자는 스택의 top이 [이면 둘이 합쳐서 pop한다. 3. ), ] 문자가 들어왔을때 스택이 비어있거나 탑이 자신의 쌍이 아니면 균형이 안잡힌 문자열이다. 4. 문자열 점검이 끝났을때 스택이 비어있어야 한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { String str = sc.nextLine(); if(str.equals(".")) break; Stack s = new S..