본문 바로가기

전체 글28

[백준] 20058 마법사 상어와 파이어스톰 - 자바 https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 👀 풀이 배열 회전과 BFS를 사용해서 풀이했습니다. 파이어스톰 시전 시 1. 2^L * 2^L 크기의 격자들로 나눈 후 시계방향 90도 회전 2. 인접한 얼음 확인 후 얼음 3개 미만 시 얼음-1 파이어스톰 다 끝난 후 3. 남아있는 얼음 합 구하기 4. 가장 큰 덩어리 크기 구하기 (BFS) [배열 회전 함수] public static void rotate() { for (.. 2022. 4. 9.
[ORACLE] MERGE SQL 사용해보기 (MySQL로 흉내) 👀 SQL MERGE문이란? 조건에 따라서 INSERT를 하거나 UPDATE, DELETE를 하는 SQL 구문입니다. MERGE문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능합니다. 오라클 DB를 사용하며 테이블에 데이터를 삽입할 때 이미 해당 데이터가 존재하면 값을 UPDATE하는 로직이 필요했는데 MERGE 구문을 알게 되어 쿼리 하나만을 사용해 해결할 수 있었습니다.! 👀 MERGE문의 기본적인 형식은 다음과 같습니다. MERGE INTO [UPDATE되거나 INSERT 될 테이블] USING [MERGE를 진행하고 싶은 대상, 조인, 서브쿼리도 사용 가능] ON [조건] WHEN MATCHED THEN [조건에 맞는 데이.. 2022. 4. 9.
Sync / Async, Block / Non-block 차이점 Sync, Async와 Block, Non-block이 얼핏 보면 비슷해보여 계속 헷갈려서 정리한다.. ✔ Sync / Async - 호출된 함수의 완료 여부를 누가 신경쓰는가 Synchronous 호출된 함수의 수행 결과 및 종료를 호출한 함수가 신경씀 호출한 함수가 호출된 함수의 작업이 끝나서 결과값을 반화하기를 기다리거나, 지속적으로 호출된 함수에게 확인 요청 Asynchronous 호출하는 함수가 호출된 함수의 완료 여부를 신경쓰지 않음 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리함(callback) ✔ Block / Non-block - 호출된 함수가 바로 제어권을 넘기는가 Block 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함.. 2022. 1. 18.
Thread-Safe란 무엇일까? ✔ Thread-Safe 멀티 쓰레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 쓰레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 뜻한다. 하나의 함수가 한 쓰레드로부터 호출되어 실행 중일 때, 다른 쓰레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 쓰레드에서의 수행 결과가 올바르게 나오는 것으로 정의한다. 멀티쓰레드 환경에서 동작해도 원래 의도한 형태로 동작하는 코드를 "Thread-Safe"하다고 한다. ✔ Thread-Safe 보장 방법 Re-entrancy 어떤 함수가 한 쓰레드에 의해 호출되어 실행 중일 때, 다른 쓰레드가 그 함수를 호출하더라도 그 결과가 각각에게 올바로 주어져야 한다. Thread-local storage 공유 자원의 사용을 최대.. 2022. 1. 17.
CORS (Cross-Origin Resource Sharing)란 무엇일까? ✔ CORS란? 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)이다. 도메인이 다른 도메인에 리소스를 요청할 때 접근 권한을 부여하는 메커니즘 추가 HTTP헤더를 사용하여, 실행 중인 웹 애플리케이션이 다른 출처의 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행 ✔ SOP란? 동일 출처 정책(Same-Origin Policy)이다. 브라우저가 다른 출처의 리소스 접근을 금지하는 정책. 자신의 출처와 동일한 리소스만 불러올 수 있다. 따라서 다른 출처의 리소스를 불러오기 위해서는 그 출처에서 올바른 CORS 헤더를 포함한 응답을 반환해주어야.. 2022. 1. 14.
동기화 문제의 해결책 (Mutex, Semaphore) 동기화 문제 동기화 : 한정적인 시스템 자원에 여러 스레드가 동시에 접근해서 사용하면 문제가 발생할 수 있다. 이 문제를 방지하기 위해 여러 스레드에게 하나의 자원에 대한 처리 권한을 주거나 순서를 조정하는 기법이다. 임계 영역 (Critical Section) 동일한 자원을 동시에 접근하는 작업(ex. 공유 변수)을 실행하는 코드 영역을 임계영역 (Critical Section)이라고 한다. 동기화 기법 유저 모드의 동기화 커널의 힘을 빌리지 않는 동기화 기법(커널의 코드가 실행되지 않음.) 성능상 이점이 있으나 기능상의 제한이 존재. 임계 구역 기반의 동기화, 인터락 함수 기반의 동기화. 커널 모드의 동기화 커널에서 제공하는 동기화 기능을 이용하는 방법. 커널 모드로의 변경이 필요하고 이는 성능 저하.. 2021. 12. 13.