본문 바로가기

전체 글

(339)
💡 Hash 자료구조 (+ 로드팩터, 이중해싱) 💡 Hash 란?입력된 데이터의 key 값을 해시 함수에 넣어 고정된 길이의 해시값을 만들고, 이를 배열의 인덱스로 사용해 데이터를 매우 빠르게 저장, 검색하는 자료구조를 말한다.>> 짧게 말하면, 데이터를 해시 함수를 통해 변환시킨 해시값을 사용해 배열의 인덱스, 위치, 데이터 값을 저장하거나 겁색할때 활용하는 것! * 해시 자료구조는 데이터 저장 및 읽기 속도가 빠르지만 일반적으로 저장 공간을 많이 필요로하고, 주소(인덱스)가 동일한 경우 충돌을 해결하기 위한 별도의 자료구조도 필요함! (아래 충돌 관련 부분에서 더 자세히 다룸) ❓ 저장 공간을 많이 필요로 하는 이유?- 키, 값, 부가 정보(해시값, 상태 플래그 등)를 함께 저장하므로 메모리 사용량이 증가- 충돌을 줄이기 위해서 여유 공..
💡 Infix, Prefix, Postfix 란? + stack 사용해서 계산하는 방법 💡 Infix (중위 표기법)✔ 평소에 일반적으로 사용하는 방식으로 연산자가 피연산자 사이에 놓인다 ✔ 일반적인 방식으로 사람들이 읽기 쉬움 ✔ 괄호를 써야 정확한 우선순위를 표현할 수 있음A + B(3 + 5) * 2 💡 Prefix (전위 표기법)✔ 연산자가 피연산자 앞에 놓인다 ✔ 괄호가 필요 없는 표기법 ✔ 좌 -> 우 방향으로 읽기만 하면 구조가 보임+ A B* + 3 5 2 💖 stack으로 Prefix 계산하는 방법* + 3 5 2 1️⃣ 오른쪽에서 왼쪽으로 읽어준다.2️⃣ 숫자(피연산자)를 만나면, stack에 push 해준다.3️⃣ 연산자를 만나면 -> 숫자 2개를 pop 해준다.4️⃣ 숫자 2개를 연산자로 계산한 뒤, 계산한 값을 stack에 push 해준다.5️⃣ sta..
💡 Queue 2개로 stack 만들기 (파이썬 코드) 💡 Queue 2개로 stack 만들기🍒 ex) 1, 2, 3, 4를 Queue 2개로 만든 stack에 넣고 출력해보자main, sub 두개의 Queue를 준비해 나중에 입력된 4가 먼저 출력 될 수 있도록 구현하면 된다. 1️⃣ main 큐에 숫자를 1부터 4까지 put을 사용해 담아준다. 2️⃣ 가장 마지막에 입력된 숫자를 제외하고, 모두 sub 큐로 이동시킨다.-> 가장 마지막에 입력된 숫자가 가장 먼저 출력되어야 하기 때문에 '4'를 제외하고 모두 sub 큐로 이동시킨다. 3️⃣ 가장 마지막 숫자 '4' 는 result 값에 담아 출력한다. 4️⃣ sub 큐에 있던 숫자를 다시 1 부터 3 순서로 main 큐로 옮겨준다.-> queue는 FIFO 특징을 가지고 있기 때문에 다시 ..
💡 stack 2개로 Queue 만들기 (파이썬 코드) 💡 Stack 2개로 Queue 만들기🍒 ex) 숫자 1, 2, 3, 4를 stack 2개로 만든 Queue에 담고 출력해보자!inbox, outbox 두개의 stack을 생성한다 -> inbox의 입구는 Queue의 in, outbox의 출구는 Queue의 out이 된다. 1️⃣ 1 ~ 4를 Inbox에 담아준다 (Queue에 in하는 과정) 2️⃣ Inbox에 담긴 숫자들을 Outbox로 옮긴다-> 1번부터 뽑아야 하기 때문에 Outbox로 4부터 옮겨준다 (1이 가장 상단에 올 수 있도록) 3️⃣ Outbox에서 1번부터 pop 해준다. 🐾 구현 코드 (파이썬)class Queue: def __init__(self): self.inbox = list() ..
[ 프로그래머스 ] 호텔 대실 (파이썬 python) https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    💕풀이 방법 처음에 문제를 보고 든 생각은 입실과 퇴실 시간을 분으로 맞춰서 계산해야겠다 였다.입퇴실 모두 분 단위로 변경해서 정렬을 한 뒤, 가장 빠른 입실 시간을 기준으로 퇴실 시간 + 10분뒤 입실이 가능한 예약건을 찾으려면 for문을 사용해야 한다는 생각이 들었다. 그리고 그 다음번 새로운 방 입실을 처리하고 나면 이중 for문을 돌려야하나..? 라는 생각을 하게됐고,주어진 book_..
[ 프로그래머스 ] 두 원 사이의 정수 쌍 (파이썬 python) https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr     💕풀이 방법 1️⃣ 원의 방정식을 사용해 y가 최솟값일 때, 최댓값일 때를 구해서 계산해 주면 되는 문제다.단, 반지름의 최대 범위가 크기 때문에 모든 점들을 구하는게 아니라 1 사분면에 있는 점들을 구한 후 4를 곱해주면 된다(예시 속 그림을 보면 대칭한다는 것을 알 수 있음) 원의 방정식 : x2+y2=r2  이제 원의 방정식을 사용해서 1사분면에 있는 두 원의 사이의 점들을 구해주면 ..
[Docker] docker compose로 Spring Boot + MySQL 컨테이너 실행시키기 💭 서론 최근 프론트엔드 개발자분들과 프로젝트를 시작하게 되면서 서로 환경을 맞춰야 할 일이 생겼고, Docker를 사용해서 환경을 맞춰보기로 했다. 백엔드에서 필요한 것, 프론트에서 필요한 것들 그리고 DB도 함께 실행되어야 하기 때문에 Docekr Compose를 사용해서 각 이미지들을 한 번에 컨테이너를 통해 실행해야겠다고 생각했다! 우선 프로젝트 환경은 다음과 같다. - java 17 - Spring Boot 3.0.2 - Gradle 비교적 최근 버전들이기 때문에 난관에 부딪힐거라 생각했는데 역시나였음..😰 그렇지만 해결했다!!! 그러니 이 글이 나처럼 문제를 해결하지 못해 고생하는 누군가에게 꼭 도움이 됐으면 좋겠다! ⚡ Docker compose 란? 우선 Docker compose가 뭔지 ..
[ 백준 ] 1655 가운데를 말해요 (python) https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 💡 접근 방법 맨 처음엔 쉽게 생각해서 빈 리스트 arr을 만들어 값을 하나씩 append 해주고, 그때마다 sort()를 해주면서 중간값을 찾는 방법으로 구현하였다 -> 골드2 문제였고..당연히 시간 초과🙄 풀이 방법을 고민해봤는데 어떻게 우선순위 큐를 사용해서 이 문제를 풀어야 하는지 감이 잡히지 않았다 그래서 다른 사람들의 풀이를 참고해 문제를 풀어냈다. 1️⃣ 이 문제를 풀..