Algorithm/inflearn 90

좌표 정렬

import java.util.*; //Point 객체를 정렬하는 인터페이스를 상속받은 클래스 class Point implements Comparable { public int x, y; Point(int x, int y){ this.x = x; this.y = y; } @Override public int compareTo(Point o) { //음수 값이 나오면 오름차순 정렬 if(this.x==o.x) return this.y-o.y; else return this.x-o.x; } } public class Main { public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); in..

Algorithm/inflearn 2021.09.27

중복 확인

이중 for문으로 할 수 있지만 효율적으로 정렬 이용하여 풀기 import java.util.Arrays; import java.util.Scanner; public class Main { public String solution(int n, int[] arr) { String answer = "U"; //다른 숫자 //오름차순 정렬★ Arrays.sort(arr); //오름차순 정렬 후 같은 값 비교 for(int i = 0; i < n-1; i++) { if(arr[i]==arr[i+1]) return "D"; } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(Sy..

Algorithm/inflearn 2021.09.27

★★LRU(캐시, 카카오 변형)

import java.util.*; public class Main { public static int[] solution(int size, int k, int[] arr) { int[] answer = new int[size]; //작업 번호를 탐색 for(int i = 0; i < arr.length; i++) { //miss임을 판단 하는 인덱스 번호 int pos = -1; //hit 났을 때 해당 인덱스 값을 구하기 for(int j = 0; j < size; j++) { if (arr[i] == answer[j]) pos = j; } //miss이면 마지막 작업 부터 1번 인덱스까지 값들을 뒤로 보내기 //문제에서 마지막 값인 7을 없애고 그 이전에 있는 6을 넣어야함. //0번 인덱스는 현재..

Algorithm/inflearn 2021.09.27

버블정렬

import java.util.Scanner; public class Main { public int[] solution(int n, int[] arr) { //i=0일 때 마지막 값 결정되고 //i=1일 때 마지막-1 값 결정된다. //하나 남았을 때는 비교 할 필요가 없으니 n-1 전까지 돌면 된다. //1회전씩 증가할 때 마다 제일 마지막에 //큰 값이 정해지므로 n-1-i만큼 돌아주면 된다.★ for(int i = 0; i arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } return arr; } public static ..

Algorithm/inflearn 2021.09.20

#선택 정렬

import java.util.Scanner; //선택정렬은 하나를 선택하고 제일 작은 값을 찾아서 선택한 값과 바꿔주는 정렬 //버블정렬은 마지막 제일 큰 값이 정해지므로 n-1-i만큼 돌지만 //선택정렬은 첫번째 제일 작은 값이 정해지므로 n만큼 돌아야함 public class Main { public int[] solution(int n, int[] arr) { //마지막 전까지 찾았으면 마지막 값을 탐색하지 않아도 됨 for(int i = 0; i < n-1; i++) { int idx = i; for(int j = i+1; j < n; j++) { //arr[1] ~ arr[n-1] 까지 돌고 가장 작은 값이 idx로 들어간다. if(arr[j] < arr[idx]) idx=j; } //현재 비..

Algorithm/inflearn 2021.09.20

★응급실

import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Stack; class Person { int id; int priority; public Person(int id, int priority) { this.id = id; this.priority = priority; } } public class Main { public int solution(int n, int m, int[] arr) { int answer = 1; Queue Q = new LinkedList(); //환자 번호와 위험도를 동시에 큐에 넣어야 하므로 //번호와 위험도를 갖는 클래스를 만들어 그 객체를 큐에 넣는다...

Algorithm/inflearn 2021.09.19

교육과정설계

import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Stack; public class Main { public String solution(String s, String t) { String answer = "YES"; //필수 과목의 순서가 어긋났는지만 판단하면 된다. //큐에 필수과목 순서대로 미리 넣어놓는다. //나머지 수업설계를 탐색 //큐에 해당 수업이 있는지 + 큐의 맨 앞인지 확인 //true면 pop 시키고 그 다음을 진행 //큐가 비어있으면 true //C B는 바로 꺼내진다. //D는 큐에 포함 X 그 다음 A 꺼낸다. //CBA가 아니라 BCA면 포함은 되어있으나 ..

Algorithm/inflearn 2021.09.19

공주 구하기

import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Stack; public class Main { public int solution(int n, int k) { int answer = 0; //큐에서 q.offer(x);가 넣는것 q.poll();가 빼는것(빼진 값도 리턴) //q.peek();은 제일 앞에 있는 것을 확인만 하는것 //q.contains(x);는 포함 boolean //k-1 만큼 poll 한다음에 offer 해준다. //그리고 k는 poll만 해준다. //그 과정이 한번의 루틴이다. //1명 남을 때 까지 반복 //1 2 4 5 6 7 8 -> 1 2 4 5 7 ..

Algorithm/inflearn 2021.09.19