[BOJ/Python] 토마토 || BFS
·
🎯PS
백준 토마토 파이썬 7576https://www.acmicpc.net/problem/7576  더보기❍ 문제철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다.창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 ..
[BOJ/Python] 회전 초밥 || 브루트 포스, 슬라이딩 윈도우
·
🎯PS
백준 회전 초밥 파이썬 2531https://www.acmicpc.net/problem/2531더보기❍ 문제회전 초밥 음식점에는 회전하는 벨트 위에 여러 가지 종류의 초밥이 접시에 담겨 놓여 있고, 손님은 이 중에서 자기가 좋아하는 초밥을 골라서 먹는다. 초밥의 종류를 번호로 표현할 때, 다음 그림은 회전 초밥 음식점의 벨트 상태의 예를 보여주고 있다. 벨트 위에는 같은 종류의 초밥이 둘 이상 있을 수 있다. 새로 문을 연 회전 초밥 음식점이 불경기로 영업이 어려워서, 다음과 같이 두 가지 행사를 통해서 매상을 올리고자 한다.원래 회전 초밥은 손님이 마음대로 초밥을 고르고, 먹은 초밥만큼 식대를 계산하지만, 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공한다.각 고..
[Database] 트랜잭션 격리 수준(Transaction Isonlation Level)
·
💬 Database
들어가며본 포스팅에선 트랜잭션 격리 수준을 조절하지 않으면 어떤 문제가 발생할 수 있는지, 그러한 문제들을 해결하고자 트랜잭션 격리 수준을 어떻게 설정하면 좋을 지에 대해 정리합니다. 트랜잭션(Transaction)📌 트랜잭션트랜잭션(Transaction)이란, 데이터베이스 상태를 변화시키는 작업의 단위 ❔데이터베이스 상태 변화SELECT * FROM TODOLIST; INSERT INTO TODOLIST VALUES(1, 'TODO'); UPDATE TODOLIST SET TODO = 'TODO2' WHERE ID =dmaolon00.tistory.com ❏ 트랜잭션 격리 수준트랜잭션의 격리 수준(Isolation Level)이란 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 ..
[Database] 인덱스(Index)란
·
💬 Database
❏ Index란인덱스(Index)는 데이터베이스 테이블의 데이터를 빠르게 검색하기 위한 데이터 구조입니다.예를 들어, 두꺼운 책에서 원하는 내용을 찾는다고 해봅시다. 책의 내용이 많을 수록 모든 페이지를 전부 확인해보는 것은 시간이 오래 걸리게 되겠죠? 그렇기에 중요한 단어가 어느 페이지에 위치해 있는지 나열한 목록, 색인을 추가해두는 편인데요.인덱스도 이러한 책의 색인과 유사한 개념으로, 데이터와 데이터의 위치를 포함한 자료구조를 통해 빠르게 조회해올 수 있습니다. 👍인덱스를 사용하지 않으면 특정 데이터를 찾기 위해서는 테이블 전체를 순차적으로 읽어야 하는 FULL TABLE SCAN이 발생합니다.특정 컬럼에 대한 인덱스를 생성하면, 데이터와 데이터의 물리적 주소를 함께 저장합니다. ❏ Index의 ..
[CS] HTTP와 HTTPS | 대칭키, 비대칭키
·
🐣 Computer Science
❏ HTTP(80)HyperText Transfer Protocol의 약자로, HTTP는 서로 다른 시스템 간 효과적인 통신을 할 수 있도록 하는 프로토콜입니다. 웹 브라우저와 웹 서버 간의 기본적인 통신을 담당합니다. ❍ Client - ServerHTTP는 웹에서 이루어지는 대부분의 기초 프로토콜이며, 클라이언트에서 URL을 통해 서버에 요청(Request)을하면, 서버에서는 해당 요청에 대한 결과를 응답(Response)하는 형태로 동작합니다. ❍ 무상태 프로토콜(Stateless)HTTP는 Stateless한 특성을 가지고 있기 때문에, 서버는 클라이언트의 상태를 보관하지 않습니다. 즉, 서버와의 요청 간에 유지되는 데이터가 존재하지 않기 때문에, 서버는 클라이언트를 식별할 수 있는 능력이 없습니..
[Java] 불변 객체(Immutable Object)란?
·
☕ Java
불변 객체의 개념과 장점, 불변 객체를 사용하는 방법을 소개합니다. ❏ 불변 객체?불변 객체(Immutable Object)란 객체 생성 이후에는 객체의 상태가 바뀌지 않는 객체를 의미한다. ❍ 불변 객체의 장점1️⃣ 객체의 대한 신뢰도가 높아지고, 안전하게 서비스 개발할 수 있다. 예를 들어, Pet이라는 객체가 name, age 등등의 필드를 가진 상황이다.... if (healthService.isBestRunner(pet)) { healthService.increasePoint(pet); } if (healthService.isNotHealthy(pet) { healthService.runTraining(pet); } ...pet이 Best Runner라면 increasePoint( )를 실행하고..
[CS/OS] PCB, Interrupt, Context Switching
·
🐣 Computer Science
❏ PCB프로세스 제어 블록(Process Control Block, PCB)는 운영체제가 프로세스를 관리하는 것에 있어서 아주 중요한 자료구조입니다. 프로세스에 대해 중요한 정보를 저장하고 있기 때문입니다. ❍ Process MetaData여러 가지의 프로세스를 수행 및 관리하기 위해선 각각의 프로세스에 대한 정보를 알고 있어야 하기 때문에, 다음과 같은 정보들이 PCB에 저장됩니다.이러한 정보를 Process MetaData라고 합니다. 1. 프로세스 ID각 프로세스에 부여된 고유한 식별자, 이를 통해 프로세스를 식별하고 구분합니다. 2. 프로세스 상태New : 프로세스가 생성된 상태Ready : CPU를 할당 받기 위해 대기하는 상태Running : CPU를 할당 받아 명령어를 실행 중인 상태Wai..
[CS / OS] 프로세스 VS. 스레드
·
🐣 Computer Science
들어가며“프로세스와 스레드의 차이점”은 면접을 위해 준비해야 할 중요한 주제이기도 합니다. 프로세스와 스레드에 대해 소개하고, 둘의 차이점에 대해 소개합니다. 먼저, 프로세스를 소개하기 전, 프로그램에 대해 알아봅시다. ❏ 프로그램(Program)프로그램(Program)이란, 어떠한 작업을 위해 실행할 수 있는 파일입니다. 흔히 어떠한 프로그램을 설치하고자, 다운로드를 받은 파일을 살펴보면 확장자가 “.exe”라고 되어있는 것을 볼 수 있습니다. 이를 프로그램이라고 합니다.아직 프로그램을 실행하지 않았기에 운영체제로부터 자원을 할당 받지 않은 상태로, 메모리에 올라가 있지 않은 상태입니다.  자, 이제 코드 덩어리 상태일 뿐인 멈춰있는 프로그램을 실행시켜 보도록 합시다. 프로그램을 실행을 하게 된다면, ..
[Database] JOIN이란
·
💬 Database
들어가며관계형 데이터베이스에서 여러 테이블의 데이터를 함께 활용하기 위해선 SQL JOIN에 대해 알아야 합니다. 이를 통해 데이터 간의 관계를 효과적으로 활용하여 효율적으로 데이터를 검색할 수 있습니다. 👍 해당 포스팅에서는 다양한 JOIN의 유형과 그 사용법, 주의해야 할 점에 대해 다룹니다.❏ JOIN의 개념 및 JOIN의 종류JOIN이란 두 개 이상의 테이블을 연결하여 원하는 데이터를 조회하는 방법을 말합니다.따라서, 정규화된 데이터베이스 구조에서 분산된 데이터를 결합하여 원하는 데이터를 도출할 수 있습니다. ❍ INNER JOININNER JOIN은 두 테이블에서 조건이 일치하는 행만을 결과로 반환합니다. 따라서 두 테이블에 모두 지정한 열의 데이터가 존재해야 합니다. 예시SELECT 학생.이..
[BOJ/ Python] LCS || 다이나믹 프로그래밍
·
🎯PS
백준 LCS 파이썬 9251 9251번: LCSLCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.www.acmicpc.net 더보기 ❍ 문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. ❍ 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. ❍..