알고리즘
-
큐 구현하기 | ArrayList, LinkedList, ArrayDeque알고리즘 2023. 8. 10. 15:01
자바에서 큐Queue 자료 구조를 직접 지원하는 인터페이스는 없다. 대신 다음의 방법들로 큐를 쓸 수 있다. 1. ArrayList ArrayList를 활용해 직접 queue 클래스를 만들기 class MyQueue { private List list = new ArrayList(); // private 접근 // 큐 안에 x라는 요소를 저장합니다. public void enqueue(String x) { list.add(x); // 내부에 이미 생성된 리스트의 add(맨 끝에 저장) } // 맨 앞의 요소를 반환 (index 0) public String peek() { return list.get(0); // 들어간지 가장 오래 } // 맨 앞의 요소를 반환하고 제거 public String dequ..
-
스택과 큐의 기본 개념 | visualgo.net알고리즘 2023. 8. 10. 14:24
1. 큐 Queue '줄 서기', '터널' (앞을 처리하지 않으면 뒤를 처리 X) FIFO : First In First Out, 먼저 들어온 데이터가 먼저 나감 관련 메서드 인큐(enqueue) : 큐에 자료 한 개를 집어 넣는 동작 디큐(dequeue) : 큐 안에 있는 한 개를 꺼내는 동작 자바에는 큐 인터페이스가 없어서 LinkedList와 ArrayDeque를 통해 구현한다. index가 없고 처음(head)과 끝(tail)만 있음 새로운 데이터를 넣으면enqueue 끝에 붙음 데이터를 꺼내면dequeue 처음부터 나옴 2. 스택 Stack '접시 쌓기', '그릇' (위를 처리하지 않으면 아래 처리 X) LIFO : Last in First Out, 가장 나중에 들어온 데이터가 가장 먼저 나감 ..
-
[백준]11651번: 좌표 정렬하기 2 | 배열 정렬, 람다식 | 코딩테스트알고리즘 2023. 8. 10. 12:21
문제: https://www.acmicpc.net/problem/11651 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // 2차원 평면 x축, y축 // 입력, 계산, 출력 // 입력 : N개의 점(x, y) // - int x, int y -> int[] Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 점의 개수 N -> N개 만큼의 점(x, y쌍)이 존재 -> N번 반복 int[][] pointArr = new int[N][2]; // 감싸주는게 먼저 카운트가 들어가야함 for (in..
-
[프로그래머스] k번째 수 | 정렬 | 코딩테스트알고리즘 2023. 8. 9. 17:41
문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42748 import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { //입력 : array //입력2 : i~j번째. k번째의 수. -> commands int[][] // -> command int[] -> [i, j, k] // i, j, k도 인덱스가 아니라 일반적인 수(1부터 시작) /* 배열을 하면 _> 2, 3, 5, 6 크기 순서대로 줄을 세우는 것. (1) 어떤 크기를 기준으로 삼을 것인가? (2) 그 크기를 어떤 방향으로 정리할 것인가? (작은 순, 큰 순 ...) (..
-
[프로그래머스] 제일 작은 수 제거하기 | 배열, 리스트 | 코딩테스트알고리즘 2023. 8. 9. 16:36
[배열 풀이] class Solution { public int[] solution(int[] arr) { /* 리턴하려는 배열이 빈 배열인 경우 -> 배열 내부에 원소가 1개만 있다면 가장 작은 수를 제거했을 경우 갯수가 0개다. 빈 배열이 된다. arr은 길이가 1이상인 배열 */ if(arr.length == 1) { return new int[] {-1}; } int min = Integer.MAX_VALUE; // int 중에서 가장 큰 값 for(int num : arr) { //System.out.println(num); System.out.println(min + " " + num); if(min > num) { //직전까지의 최소값이 num보다 크다면 min = num; //num을 mi..
-
[백준]개수 세기 | 배열 | 코딩테스트알고리즘 2023. 8. 9. 15:41
백준은 표준입출력 문제. 입력을 매개변수로 받는 게 아니라 직접 Scanner로 받아줘야 함 import java.util.Scanner; class Main { public static void main(String[] args) { // 입력 고정 Scanner sc = new Scanner(System.in); // 표준입출력 문제는 입력을 매개변수로 받는 게 아니라 직접 Scanner로 받아줘야 함 /* * 입력: 총 N개의 정수. 정수 v * - 1 : 정수의 개수(1~100) * - 2 : 정수가 '공백'으로 구분 * - 2-1 : nextInt로 끊어서 받을 수 있음 * - 3 : 찾으려는 정수 v * - 출력 : 정수 v가 몇 개인지 */ // 첫째 줄 N int N = sc.nextInt..
-
[프로그래머스]문자열 내 p와 y의 개수 : chatGPT의 활용방안까지 - 코딩테스트알고리즘 2023. 8. 9. 14:53
* 강사님의 팁 1. 주석을 다는 걸 아끼지 말자 2. 문제를 내가 어떻게 인지하고 생각이 흐르고 있는지 각자의 방법으로 항상 표시하자. 주석, 메모장, 손필기 등 //함수형 문제(메서드형 문제) class Solution { boolean solution(String s) { /* 배열, 반복, for, 순차탐색(선형탐색) 1. 입력 2. 계산 3. 출력 메서드형 문제에서 '입력'은 무엇일까? 표준입출력형에선 Scanner를 통한 입력 메서드형에서는 '매개변수'를 통해 인자를 받는다. 값:인자(arguments), 변수 : 매개변수(parameter) 메서드에서 외부로 값을 내보내는 방법 1. (인스턴스 변수, 멤버변수) 변수에 할당, 변경 2. return(반환값) 메서드형 문제에서는 멤버변수를 드물..
-
2. 탐색과 정렬알고리즘 2023. 8. 9. 14:01
2.1 순차 탐색(Seqential Search) 선형 탐색(linear search) 순서가 있는 반복 가능한 객체(리스트, 배열 등) 안에 있는 원소를 하나씩 순차적으로 비교하며 탐색 위치를 의미하는 인덱스(index)는 0부터 시작하는 경우가 많음 for문을 사용해 주로 해결 2.2 배열(Array) 고정된 크기의 동일한 타입의 요소들을 저장하는 자료구조 연속된 메모리 공간에 요소들이 저장되어 빠른 접근이 가능하다. 크기가 고정되어 있어 추가/삭제가 어렵다. 2.3 리스트(List) 크기가 가변적이며 동일한 타입 또는 다양한 타입의 요소들을 저장하는 자료구조 요소들은 여러 곳에 분산되어 저장되므로 접근이 상대적으로 느릴 수 있다. 2.4 정렬(Sorting) 데이터를 일정한 순서대로 나열하는 작업 ..