알고리즘, SQL/알고리즘
-
queue란 무엇인가?알고리즘, SQL/알고리즘 2023. 12. 10. 22:40
개요 알고리즘 문제를 하나씩 풀다보니 자료구조와 관련된 문제가 나오는데, 큐 메서드들이 헷갈리는게 많아서 한번 정리해야겠다 싶었다. queue란 무엇인가? Queue의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미하는데, 이처럼 줄을 지어서 순서대로 처리되는 것을 큐(queue)라고 한다. 큐는 자료를 쌓아두는 스택(Stack)과 다르게 FIFO(First In First Out)의 구조로 먼저 들어온 데이터가 먼저 나가게 된다.(스택은 First In Last Out의 구조를 가진다.) queue의 특징 1. 먼저 들어온 데이터가 먼저 나가는 FIFO(First In First Out)의 구조이다. 2. 큐는 맨 앞쪽을 front라고 정해서 삭제연산만 수행한다...
-
백준 2164번 : 카드2알고리즘, SQL/알고리즘 2023. 12. 6. 23:59
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 별 생각 없이 배열 사용하고 짝수 인덱스번호인 애들만 삭제해주면 되겠다 싶어서 만들었었는데, 생각한대로 안되길래 한시간 넘게 문제를 잡고있었다. 뭔가 될 거 같아서 다른 블로그에서 힌트만 살짝 보려고하니까 큐를 사용해서 너무 쉽게 푸는거 보고 머리가 띵했다. 풀이 public class Main { public static void main(String args[]) throws IOExcepti..
-
HashSet이란?알고리즘, SQL/알고리즘 2023. 12. 2. 23:59
개요 알고리즘을 공부를 위해 다시 한 번 정리해보고자 한다. Set이란? 데이터 자료구조 중 하나로 특정한 값들을 저장하는 추상자료형(interface)이다. Set은 비선형 구조이기 때문에 '순서'의 개념과 '인덱스'가 존재하지 않는다. 값들은 순서가 존재하지 않으며, 중복되지 않는다. 이는 수학에서 집합을 컴퓨터 구현한 것이다. 다른 모음(Collection)타입에서 특정원소를 검색하는 것이 주 업무인 반면, 집합은 대상 원소가 집합에 소속되어 있는지 여부를 검사한다. Set의 특성 데이터를 비순차적으로 저장할 수 있는 순열 자료구조 삽입(insert)한 데이터가 순서대로 저장되지 않는다. 수정 가능하다. 중복해서 삽입이 불가능하다.(중복값이 들어오면 하나의 값만 저장한다.) FastLookup이 필..
-
백준 3052번 : 나머지알고리즘, SQL/알고리즘 2023. 11. 28. 16:08
문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제보고 별 생각 없이 이중for문 사용하면 될 것 같아서 사용했는데, 잘 안돼서 이것저것하다가 2시간 정도 해맸다... 이게 풀 수 있을 거 같은데 안돼서 이악물고 혼자 풀..
-
백준 1157번 : 단어 공부알고리즘, SQL/알고리즘 2023. 11. 27. 12:34
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 오답 import java.util.Scanner; public class Main { public static void ..