CS

    [BaekJoon] 백준 16928번 뱀과 사다리 게임 - Python

    [BaekJoon] 백준 16928번 뱀과 사다리 게임 - Python 🎈문제 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 💬설명 간단한 bfs문제 게임판 전체를 기준으로 주사위 1-6칸이 나왔을 경우를 하나씩 큐에 넣어가면서 해결하면 되는 문제 포인트는 사다리나 뱀을 만난 경우 이동하는 칸으로 update를 해줘야 한다는 것이다. 👩‍💻코드 from collections import deque..

    [BaekJoon] 백준 7576번 토마토 - Python

    [BaekJoon] 백준 7576번 토마토 🎈문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 💬설명 비슷한 문제를 여러개 풀어봤기 때문에 금방 풀었다. Bfs로 많이 푼 것 같은데, 큐를 쓰지 않고 풀었다. 아래와 같이 푸니까 pypy로 채점하지 않고 제한시간을 만족시킬 수 있었다. 아래와 같이 푼다. 토마토 위치를 먼저 배열에 저장해준다. 익은 토마토 개수와 모든 토마토 개수를 따로 저장해준다. (나중에 일일히 세지 않고..

    [BaekJoon] 백준 7569번 토마토 - Python

    [BaekJoon] 백준 7569번 토마토 - Python 🎈문제 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 💬설명 처음에 bfs로 큐를 써서 풀려고 하다가 적용하지 않고 풀어봤다. 대신 시간 초과에 걸려서 pypy로 채점했다. 확실하게 시간 단축해서 풀고 싶으면 queue로 풀어줘야 할듯 풀이는 간단하다. 매일 추가된 익은 토마토에 대해 6개 방향을 체크해서 익은 토마토의 개수와 전체 토마토의 개수가 같다면 출력 ..

    [BaekJoon] 백준 1107번 리모컨 - Python

    [BaekJoon] 백준 1107번 리모컨 - Python 🎈문제 https://www.acmicpc.net/problem/1107 💬설명 범위가 작고, 시간은 많이 주어졌기 때문에 완전탐색으로 풀 수 있는 문제 1. +-만 썼을 때 얼마나 걸리는지 구한다. 2. 모든 범위에 대해 고장난 버튼이 없는 수를 찾아서 100에서 몇번 버튼을 눌러야하는지 계산해서 최소값을 업데이트 한다. 나는 고장난 버튼을 찾기 위해 set을 써서 교집합을 통해 비교해줬다. 👩‍💻코드 N = input() M = int(input()) if M != 0: broken = set(map(int, input().split())) else: broken = set() # +-로 가는 횟수 answer = abs(100 - int(N..

    [Programmers] 두 큐 합 같게 만들기 - python

    [Programmers] 두 큐 합 같게 만들기 - 파이썬 🎈문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💬설명 각 배열을 deque에 넣어서 큐로 만든다. 만약 sum 이 홀수 인 경우 어떻게 해도 반반 나눠질 수 없으니 예외 처리해준다. 주의점: sum같은 경우는 while문 안에서 돌리는 것보다 밖에서 sum을 미리 구한 뒤, 내부에서 + - 정도만 해주는게 효율적이다. 이후에 while문 안에서 합이 큰 큐에서 합이 작은 큐로..

    [Programmers] 성격 유형 검사하기 - Python

    [Programmers] 성격 유형 검사하기 - Python 🎈문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단한 문자열 문제. 푸는데 10분정도 걸렸다. 👩‍💻코드 def solution(survey, choices): answer = "" tp = {"R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0} for i in range(len(survey)): if choice..

    [OS] Process Syncronization

    Background 공유된 데이터에 동시에 접근해서 write을 하는 것은 데이터 불일치를 유발할 수 있다. 이렇게 공유된 데이터를 동시에 여러 프로세스가 건드리는 상황을 Race condition이라고 한다. 결과적으로 최종값은 누가 그 데이터를 마지막으로 건드렸냐에 달려있게 된다. 이런 Race condition을 막기 위해 병렬로 실행되는 프로세스들은 동기화(synchronized)되어야 한다. The Critical-Section Problem 그럼 Critical-Section Problem, 임계 구역 문제가 무엇인지부터 살펴보자. n개의 프로세스들이 공유된 데이터를 사용하기 위해 경쟁하고 있다고 가정해보자. 각각의 프로세스들은 공유된 데이터에 접근하는 코드 부분인 critical sectio..

    [OS] Virtual Memory

    Virtual Memory (= Logical Memory) 메인 메모리의 크기는 한정되어 있다. 그렇다면 메인 메모리의 크기보다 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 이를 위해 나온 개념이 Virtual Memory, 가상 메모리이다. 실행을 위해 프로그램의 모든 부분이 필요한 것은 아니다. 따라서 필요한 부분만 Physical Memory에 적재하고 전체가 다 적재된 것처럼 사용하기 때문에 Physical Address Space보다 Logical Address Space가 더 크다. 주소 공간을 여러개의 프로세스가 공유할 수 있도록 해준다. 더 효율적인 프로세스 생성이 가능하게 해준다. 페이지들이 swap in & swap out 될 수 있게 해줘야 적용이 가능하다. Demand pa..