전체 글

    [운영체제] 프로세스 동기화

    프로세스 동기화가 필요한 이유 프로세스 동기화(Process Synchronization) : 여러 프로세스가 공유하는 자원의 일관성을 유지하는 것 여러 프로세스가 서로 협력해 공유자원을 사용하는 상황에서 경쟁조건(race condition)이 발생하면 공유자원의 신뢰성이 떨어진다. 이를 방지하기 위해 프로세스들이 공유자원을 사용할 때 특별한 규칙을 만드는 것 race condition이란? 여러 프로세스(또는 스레드)가 공유자원에 동시에 접근할 때 공유자원에 대한 접근 순서에 따라 실행 결과가 달라질 수 있는 상황. 동시에 접근할 때 자료의 일관성을 해치는 결과가 나올 수 있다. 임계구역(critical section) : 여러 프로세스(또는 스레드)가 자원을 공유하는 상황에서 하나의 프로세스(스레드)..

    [C++] 백준 14499번 - 주사위 굴리기

    https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net 처음에 문제를 봤을 때 이해가 한 번에 가지 않아 조금 당황했지만 문제를 이해하고 나면 크게 어렵지는 않은 전형적인 시뮬레이션 문제입니다. 크기가 N * M인 지도가 주어지고, 지도의 각각 칸에 숫자가 쓰여있습니다. 주사위가 처음 놓이는 위치가 주어지고, 해당 위치는 지도에 0이 쓰여있습니다. 주사위는 각 면이 0으로 초기화되어있습..

    [C++] 백준 2504번 - 괄호의 값

    https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 스택의 활용 문제입니다. 처음에 문제에 접근할 때 임시 변수 tmp에 값을 계산하다가 닫는 괄호(')', ']')가 나오면 이를 ans에 더하는 것까지는 생각하였는데, 그 후 tmp를 초기화해버리면 이전 괄호들의 정보가 날아가기 때문에 고민을 많이 했던 문제입니다. 결국 생각보다 구현이 쉽지 않아 삽질을 조금 하다가 검색을 통해 다음 블로그 글을 참고하였습니다. https://mjmjmj98.t..

    [C++] Programmers 2020 카카오 인턴십 - 키패드 누르기

    https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr Level 1로 크게 어렵지는 않은 난이도의 구현 문제입니다. 위와 같은 그림으로 핸드폰 키패드가 있을 때, 손가락의 최소 이동 거리와 우선순위(왼손잡이 또는 오른손잡이)를 고려하여 입력으로 주어진 numbers의 번호들을 누르기 위해 어떤 손의 손가락..

    [C++] 백준 1182번 - 부분수열의 합

    https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net N개의 정수의 수열을 입력으로 받고, 그 수열의 크기가 양수인(크기가 1개 이상인) 부분 수열 중 합이 S가 되는 경우의 수를 구하는 문제입니다. 처음에 접근했던 방식으로는, 백트래킹으로 원래 수열을 맨 처음부터 살펴보며 부분 수열을 만듭니다. 원소 개수가 1개 이상인 부분 수열이 만들어지면 합을 구하고 그 합이 S와 같아지면 cnt를 1 증가시킵니다. 백트래킹..

    [강좌]스프링 입문 - 7. AOP

    이 글은 인프런에서 김영한 님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 수강 후 개인적으로 공부한 내용을 정리한 게시글입니다. 잘못된 점이나 부족한 부분이 있다면 언제든 지적 부탁드립니다. 해당 강의는 이곳에서 수강할 수 있습니다. 이전 강의에서는 JPA와 스프링 데이터 JPA를 활용한 스프링 DB 접근 기술에 대해 알아보았습니다. 이번 강의에서는 AOP에 대해 학습합니다. 1. AOP가 필요한 상황 백엔드 구현에서의 관심사항은 두 가지 사항으로 나뉩니다. 공통 관심사항(cross-cutting concern)과 핵심 관심사항(core concern)으로 나뉘는데, 회원 가입, 회원 조회와 같은 비즈니스 로직과 같은 경우가 핵심 관심사항이고, 이러한 기능 외에 회원..

    [강좌]스프링 입문 - 6. 스프링 DB 접근 기술(2)

    이 글은 인프런에서 김영한 님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 수강 후 개인적으로 공부한 내용을 정리한 게시글입니다. 잘못된 점이나 부족한 부분이 있다면 언제든 지적 부탁드립니다. 해당 강의는 이곳에서 수강할 수 있습니다. 이전 강의는 스프링의 DB 접근 기술 중 첫 번째 강의로 H2 데이터베이스의 사용을 통해 Jdbc와 JdbcTemplate에 대해 알아보았습니다. 이번 강의에서는 스프링 JPA에 대해 학습합니다. 1. JPA 지난 강의에서 스프링과 DB를 Jdbc로 연동하고, JdbcTemplate를 사용해 기존의 코드에서 더 간단한 코드로 DB에 접근해 보았습니다. JPA를 사용하면 기존의 반복 코드를 줄일 뿐 아니라 기본적인 SQL도 JPA가 직접 ..

    [강좌]스프링 입문 - 6. 스프링 DB 접근 기술(1)

    이 글은 인프런에서 김영한 님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 수강 후 개인적으로 공부한 내용을 정리한 게시글입니다. 잘못된 점이나 부족한 부분이 있다면 언제든 지적 부탁드립니다. 해당 강의는 이곳에서 수강할 수 있습니다. 이전 강의에서는 회원 관리 예제를 통해 웹 MVC 개발 원리를 학습하였습니다. 이번 강의에서는 스프링 DB 접근 기술 중 첫 번째로 H2데이터베이스를 활용해 순수 Jdbc와 JdbcTemplate에 대해 학습합니다. 이전 강의에서까지 사용했던 메모리 리포지토리는 서버를 내리면 저장된 회원 데이터가 전부 사라진다는 문제가 있었습니다. 이번 강의에서는 스프링에서 데이터베이스를 통해 데이터에 액세스하는 방법에 대해 실습하고 학습해 봅니다. 1..

    [강좌]스프링 입문 - 5. 회원 관리 예제 - 웹 MVC 개발

    이 글은 인프런에서 김영한 님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 수강 후 개인적으로 공부한 내용을 정리한 게시글입니다. 잘못된 점이나 부족한 부분이 있다면 언제든 지적 부탁드립니다. 해당 강의는 이곳에서 수강할 수 있습니다. 이전 강의에서는 스프링 빈과 의존관계에 대해 학습하였습니다. 이번 강의에서는 회원 관리 예제를 통해 웹 MVC 개발 원리를 학습해 봅니다. 1. 회원 웹 기능 - 홈 화면 추가 이전의 강의에서 작성한 멤버 컨트롤러에서 회원을 등록, 조회하는 기능과 화면을 만들어 봅니다. 기존에는 "localhost:8080"으로 홈 화면 접속 시 static의 index.html을 띄웠지만, 이번에는 홈 화면을 띄우는 컨트롤러를 만들어 우리가 직접 작성..