Algorithm/inflearn 90

★최대 길이 연속부분수열

import java.util.Scanner; public class Main { public int solution(int n, int m, int[] arr){ int answer = 0, cnt = 0, lt = 0; // cnt는 0을 1로 바꾼 횟수 for(int rt = 0; rt m) { //1로 바꾼 횟수가 초과하면(0을 m번 초과해서 만나면) if(arr[lt] == 0) cnt--; //0인 지점을 찾아서 줄여줌 lt++; } //rt-lt+1은 1이 연속된 연속부분수열의 길이 answer = Math.max(answer, rt-lt+1); } //rt=0일 때 그냥 r..

Algorithm/inflearn 2021.09.15

연속된 자연수의 합(two pointers)

1.lt, rt 이용 import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public int solution(int n){ int answer=0, lt=0, sum=0; int m = n/2+1; // 8 int[] arr = new int[m]; // 입력 15 출력 3 // 15일때 8까지만 보면됨 8 9는 볼필요 X // (2로 나눈 나머지=7 + 1 -> 8 까지만 돌리면됨 for(int i=0; i0){ cnt++; // 2일 때 / 3일 때 / 4일 때 n=n-cnt; // n은 12 / n은 9 / n은 5 if(n%cnt==0) { answer++; } } retu..

Algorithm/inflearn 2021.09.14

★공통원소 구하기

import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public ArrayList solution(int n, int m, int[] a, int[] b){ ArrayList answer = new ArrayList(); //오름차순 정렬 Arrays.sort(a); Arrays.sort(b); int p1 = 0, p2 = 0; //포인터 //왜 배열이 끝나면 끝나는 가를 생각할것. while (p1 < n && p2 < m) { // 둘 중 배열이 끝나면 끝 if(a[p1] == b[p2]) { // 공통 원소를 찾았으면 둘 다 증가 answer.add(a[p1++]); p2+..

Algorithm/inflearn 2021.09.13

#★두 배열 합치기

import java.util.ArrayList; import java.util.Scanner; public class Main { public ArrayList solution(int n, int m, int[] a, int[] b){ ArrayList answer = new ArrayList(); int p1 = 0, p2 = 0; //포인터 while (p1 < n && p2 < m) { // 둘 중 배열이 끝나면 끝 if(a[p1] < b[p2]) answer.add(a[p1++]); else answer.add(b[p2++]); } while (p1 < n) answer.add(a[p1++]); //나머지 넣기 while (p2 < m) answer.add(b[p2++]); //나머지 넣기 re..

Algorithm/inflearn 2021.09.13

★★멘토링

import java.util.*; class Main { public static int solution(int n, int m, int[][] arr){ //짝을 만들 수 있는 경우 int answer = 0; // arr[m][n] // n이 학생 수고 m이 테스트 횟수 //arr[0][0] - 0번 테스트에서 1등한 학생의 학생번호 //arr[0][1] - 0번 테스트에서 2등한 학생의 학생번호 //arr[0][2] - 0번 테스트에서 3등한 학생의 학생번호 //arr[0][3] - 0번 테스트에서 4등한 학생의 학생번호 //i번 학생과 j번 학생의 k번의 테스트에서 등수찾아서 비교한다. for(int i = 1; i

Algorithm/inflearn 2021.09.10

★봉우리

import java.util.Scanner; public class Main { public int solution(int n, int[][] arr){ int answer = 0; //상하좌우 체크할 수 있는 좌표값 배열 int[] dx = {-1 , 0, 1, 0}; int[] dy = {0, 1, 0, -1}; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ boolean flag = true; for(int k = 0; k < 4; k++){ int nx = i + dx[k]; int ny = j + dy[k]; //상하좌우 인덱스값 체크 안하면 AurrayIndexOufOf~ 에러가 남 //격자판에 있는 수들은 자연수이므로 가장자리 부분은 제..

Algorithm/inflearn 2021.09.10