전체 글 372

005 : 나머지 합 구하기

S[0]을 먼저 TP[0]으로 넣어두고 1부터 시작해도 됨 0부터 1 0부터 2 ... 0부터 V-1까지 구간만 우선 생각한다 또한 나머지가 있다면 나머지가 같은 것으로 bundling한다 *나머지가 0일때도 더해줘야함 나머지는 T와 다르다. 1 ~ T-1 구간에 존재 동일한 나머지 bundling이 있다면 조합으로(큰오른쪽, 작은오른쪽 자동으로 순서가 정해지므로) 수를 counter에 더한다 import java.util.Scanner; public class Main { public static void main(String[] args) { // ISC Scanner sc = new Scanner(System.in); int V = sc.nextInt(); int T = sc.nextInt(); /..

004 : 2차원 배열의 구간 합

> 2차원 행렬에 3차원 블럭(음양 / 값의 존재 여부) 만들기 일반 TP[](A[])와 합 S[]의 capacity는 같다 - 1부터 ~ 5까지 - 1까지 합 ~ 5까지의 합 두번 더하고 난 뒤 - 마이너스 보정 + 해당 포인트 박아넣기 전체에서 - 직전들을 두번 빼고 + 플러스 보정 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { // ISC BufferedReader br = new..

003 : 1차원 배열의 구간 합

0은 필요없지만 0이 있어야 1부터 서술 가능 s와 e를 받아서 s-1까지 빼버린다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { // ISC BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); // D2F..

002 : Array에 점수 저장하여 평균 구하기

점수기준은 100이 아닌, 최고점을 기준으로 보정되므로 다시 100 기준으로 점수를 봤을떄 올라가는 경향이 있다 max와 sum(plate) 를 한번에 계산하여 바로 투입 import java.util.Scanner; public class Main { public static void main(String[] args) { // ISC Scanner sc = new Scanner(System.in); int V = sc.nextInt(); // D2F int max = 0; int plate = 0; int[] TP = new int[V+1]; for (int i = 1; i

009 : sliding window

TP는 capacity도 필요없이 단순히 tocharArray()로 분배시켜주며 됨 myArr(focus locked) -> checkArr(char > int checker) -> checkSecret(int target) 각 알파벳에 임의의 숫자를 부과하면 int[] Array로 connect 시킬 수 있다 알파벳(char) - 알파벳pointer(int) - 알파벳수량value(int) 지금 lock된것을 개별 char로 보낸다 각 알파벳 갯수가 충족되면(0은 0) checkSecret에 1을 더하고, 해당 bottom이 4 높이로 올라가면 counter++;한다 SP로 넣고, 양 끝을 더하고 빼면서 작업 SP 작업시 모든 알파벳 필요갯수가 0인 경우에는 모든 선형 공간마다 pipeline으로 빠져..

008 : 좋은 수 구하기

여러번 target의 tC이므로 선형 공간 필요 문제의 조건에서 재료들은 0일수도 음수일수도 있으므로 타겟에 부합해도 pointer 검증 필요 for문 밖으로 cable 연결해야 되는것은 for문 밖에서 연결해서 프로그램에서 plate or receive해서 나올것 좋은 수는 여러 조합이 필요한 것이 아닌, 단 하나의 조합으로도 조건은 충족되므로 해당 타겟에서는 그 즉시 break로 빠져나온 뒤 바로 다음 것으로 넘어간다 s의 dd는 ++;이고, e는 --; 이므로 조합이 T와 비교하여 크거나 작을 때 옮길 Pointer는 정해져 있다 *(2 pointer와 binary search의 차이) - 둘 다 s, e, connector, check-in(target)이 필요하지만 binary search : ..

007 : 투 포인터 > 무작위 배열의 2가지 합

오름차순 정렬 필요 counter에 마킹되면, s++ e-- 두번다 이동 필요 br 닫아주기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { // ISC BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readL..

006 : 투 포인터

pointer = value일 때 connector가 필요없을수도 있다 e = N일의 케이스 1개는 별도로 두고 시작한다 pointer의 driving direction은 모두 ++; 그러나 사잇값을 얘기하므로 - e는 움직이고 다음값을 포함하고 - s는 현재값을 버리고 다음으로 움직인다 *plate가 N이 되고 나서 s++ 먼저 할 수는 없는지? > 상관없음 어차피 다음 N까지 모두 check-in되는 개념 import java.util.Scanner; public class Main { public static void main(String[] args) { // ISC Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // OP int coun..