[BOJ/Python] 토마토 || BFS
·
🎯PS
백준 토마토 파이썬 7576https://www.acmicpc.net/problem/7576  더보기❍ 문제철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다.창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 ..
[BOJ/Python] 회전 초밥 || 브루트 포스, 슬라이딩 윈도우
·
🎯PS
백준 회전 초밥 파이썬 2531https://www.acmicpc.net/problem/2531더보기❍ 문제회전 초밥 음식점에는 회전하는 벨트 위에 여러 가지 종류의 초밥이 접시에 담겨 놓여 있고, 손님은 이 중에서 자기가 좋아하는 초밥을 골라서 먹는다. 초밥의 종류를 번호로 표현할 때, 다음 그림은 회전 초밥 음식점의 벨트 상태의 예를 보여주고 있다. 벨트 위에는 같은 종류의 초밥이 둘 이상 있을 수 있다. 새로 문을 연 회전 초밥 음식점이 불경기로 영업이 어려워서, 다음과 같이 두 가지 행사를 통해서 매상을 올리고자 한다.원래 회전 초밥은 손님이 마음대로 초밥을 고르고, 먹은 초밥만큼 식대를 계산하지만, 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공한다.각 고..
엔티티 매니저란? (feat. 영속성 컨텍스트, 엔티티 매니저 팩토리)
·
🍀 Spring Boot
들어가며엔티티 매니저는 엔티티의 상태를 관리하는 역할입니다. 어떤 방식으로 엔티티의 상태를 관리할 수 있을까요? 해당 포스팅에선 영속성 컨텍스트와 함께 엔티티의 상태를 관리하는 엔티티 매니저에 대해 정리해보았습니다.엔티티 매니저는 JPA에서 영속성 컨텍스트와 상호작용하며 엔티티 객체의 생명주기를 관리하는 역할입니다. 엔티티를 DB에 저장, 수정, 삭제, 조회하는 모든 일에 대해 담당하고 있습니다. ❏ 영속성 컨텍스트란?영속성 컨텍스트란 엔티티 객체를 관리 및 저장하는 1차 캐시 공간입니다. 따라서, 불필요한 DB 접근을 줄이고, 효율적으로 엔티티를 영구 저장하는 환경이 됩니다. 이를 영속성 컨텍스트라고 합니다. 👍1차 캐시변경 감지 (Dirty Checking)쓰기 지연 (Write-behind)이러한..
[Spring] JPA의 ddl-auto 옵션에 대해 알아보자
·
🍀 Spring Boot
들어가며스프링 부트 프로젝트를 시작할 때, application.yml 파일을 생성하여 설정하다보면, 항상 맞이하게 되는 spring.jpa.hibernate.ddl-auto 옵션이 있습니다. 처음에는 create와 update로만 설정하곤 했지만, 더 다양한 옵션이 존재합니다. 해당 포스팅에서는 JPA의 ddl-auto의 각 옵션들은 어떻게 동작하는지와 어떤 환경에서 사용해야 하는걸까에 대해 정리해보았습니다.❏ ddl-auto란?ddl-auto란 JPA 구현체인 Hibernate가 엔티티 클래스 기반으로 데이터베이스 스키마를 어떻게 생성하거나 검증할지 결정하는 설정값입니다.spring: jpa: hibernate: ddl-auto: updateapplication.yml 파일에 위처럼 ..
[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”라고 되어있는 것을 볼 수 있습니다. 이를 프로그램이라고 합니다.아직 프로그램을 실행하지 않았기에 운영체제로부터 자원을 할당 받지 않은 상태로, 메모리에 올라가 있지 않은 상태입니다.  자, 이제 코드 덩어리 상태일 뿐인 멈춰있는 프로그램을 실행시켜 보도록 합시다. 프로그램을 실행을 하게 된다면, ..