Algorithm
[Data Structure] 우선순위 큐(Priority Queue)란?
1. 우선순위 큐(Priority Queue)의 개념 우선순위 큐(Priority Queue)는 큐(Queue)와 구조가 비슷하다. 다만 다른 점이 있다면 큐(Priority Queue)는 들어온 순서대로 데이터가 나가는 것이 아니라, 우선순위를 정해 우선순위가 높은 순서대로 데이터가 나가게 된다. 우선순위 큐(Priority Queue)는 리스트(List) 또는 힙(Heap)을 이용해 구현이 가능하며 일반적으로 힙(Heap)을 많이 이용한다. 더보기 힙(Heap)이란? 이진 트리 자료구조의 일종으로 항상 루트 노드를 제거한다. 1) 최소 힙(min Heap) - 루트 노드가 가장 작은 값을 가진다. - 즉, 값이 작은 데이터가 우선적으로 제거된다. 2) 최대 힙(max Heap) - 루트 노트가 가장 ..
[Data Structure] 큐(Queue)란?
1. 큐(Queue)의 개념 큐(Queue)는 "줄을 서다"라는 의미를 갖고 있으며, 입구와 출구가 모두 뚫려 있는 터널과 같은 형태이다. 사람이 줄을 서서 기다린다는 것처럼 먼저 들어온 데이터가 먼저 나가는 형태의 구조로 LIFO(Last In First Out) 방식인 스택(Stack)과는 달리 FIFO(First In First Out)방식을 가지고 있다. Enqueue는 큐(Queue)에 데이터를 입력하는 동작이고, Dequeue는 큐(Queue)에 데이터를 출력하는 동작이다. 2. 스택(Stack)에서의 오버플로우(Overflow)와 언더플로우(Underflow) - 오버플로우(Overflow) : 큐(Queue)의 크기만큼 데이터가 꽉 차서 데이터를 넣지 못할 때 발생한다. - 언더플로우(Un..
프로그래머스[Level 1] - 정수 제곱근 판별 (java)
- 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. - 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. -나의 풀이 class Solution { public long solution(long n) { long answer = 0; while(answer * answer < n){ answer++; } if(answer * answer == n){ answer++; answer*=answer; }else{ answer = -1; } return answer; } } n이 어떤 수의 제곱인지 알..
프로그래머스[Level 1] - 평균 구하기 (java)
- 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. - 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. -나의 풀이 class Solution { public double solution(int[] arr) { double answer = 0; for(int i = 0; i < arr.length; i++){ answer+=arr[i]; } answer /= arr.length; return answer; } } arr에 있는 값을 반복문을 통해 answer에 값을 더 했고..
프로그래머스[Level 1] - 자릿수 더하기 (java)
- 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. - 제한사항 N의 범위 : 100,000,000 이하의 자연수 - 나의 풀이 import java.util.*; public class Solution { public int solution(int n) { int answer = 0; String str = String.valueOf(n); for(int i = 0; i < str.length(); i++){ answer += Integer.parseInt(String.valueOf(str.charAt(i))); } return answer; } } ..
프로그래머스[Level 1] - 직사각형 별 찍기 (java)
- 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. - 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. - 나의 풀이 import java.util.Scanner; public class coding_test_01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); for(int i = 0; i < b; i++){ //*의 세로 for(int j = 0; j < a; j++){ //*읠 가로 System.out..