본문 바로가기

분류 전체보기

(291)
백준, 사다리 조작 백준, 사다리 조작 ❓문제https://www.acmicpc.net/problem/15684 15684번: 사다리 조작사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선www.acmicpc.net ✅ 분류 accepted ❓ 풀이사다리를 1개 설치할 경우, 모든 경우 탐색 사다리를 2개 설치할 경우, 모든 경우 탐색 사다리를 3개 설치할 경우, 모든 경우 탐색 만약, 사다리 3개 설치하고도 원하는 결과를 얻을 수 없는 경우 -1 return 현재 위치에서 사다리 설치가능하면 설치 원하는 값 얻을 수 없으면 설치를 취소하고 설치 가능한 다음 위치를 탐색해야 한다. 즉,..
프로그래머스, 여행경로 프로그래머스, 여행경로 ❓문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓분류 accepted 개발자 친구의 도움을 받았다. 수많은 코드들을 봐도 이해가 안됐는데, 설명들으니 이해된다. 설명 들은 다음 날 스스로 풀어봤다! 시간이 지난 뒤 다시 풀어봐야 할 문제~ 모든 티켓을 사용해야 한다는 점이 문제의 풀이법을 생각하는데 핵심! ❓ 접근 방법 티켓의 사용여부를 체크해가며 모든 항공권을 사용하는 경로를 저장한다. 만약 해당 항공권을 사용..
백준, 뱀 백준, 뱀 ❓문제 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net ❓분류 : pass!!! 예전에 정답코드를 보고도 이해하지 못했던 문제였는데 스스로 풀어서 기쁘다! ❓ 풀이 이 문제의 핵심은 뱀의 길이를 늘렸다 줄였다 할 수 있다는 점이다. 가장 처음 발자취를 남긴 뱀의 위치(꼬리)를 없애줘야 하기 때문에 순서가 중요! 그리고 FIFO해줘야 하므로 QUEUE를 사용해야한다. 나는 추후 이동 방향을 결정하는 정보(3 L, 8 D)도 큐를 활용했다. 📜..
프로그래머스, 게임 맵 최단거리 프로그래머스, 게임 맵 최단거리 문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분류 level2 accepted 풀이 최단거리 = BFS, 큐 활용 문제 ❌ 나의 풀이 def bfs(R, C, r,c, maps): dr = [-1,0,1,0] dc = [0,1,0,-1] queue = [(r, c, 1)] # row, cloumn, distance while queue: cur_r, cur_c, distance = queue.pop(0) ..
주소 공간의 개념, VM 주소 공간의 개념, VM 운영체제가 주소 공간을 추상화 하는 방법 ❓왜 윈도우에서 가상 메모리 공간은 64KB 정렬이 된 걸까? 가상 메모리를 할당하는 경우 일반 페이지 하나의 크기는 4KB 그런데, 시스템은 64KB 선형 주소 공간을 한꺼번에 예약합니다. 1Byte가 필요하다고 해도 4KB가 commit되며, 64KB의 선형 주소 공간이 예약됩니다. 즉, 작은 데이터를 사용하더라도 더 큰 공간이 할당됩니다. 이에 대한 원인은 Alpha AXP RISC 프로세서의 동작 특성에서 기인했다고 합니다. RISC 프로세서의 경우 32bit 정숫값을 로드하는 명령어가 없었고, 대신 2개의 16비트 정수를 로드해 합치는 방식이었다고 합니다. 16bit의 정수는 2의 16승 또는 65,536 가지의 서로 다른 값을 ..
프로그래머스, 광물캐기 프로그래머스, 광물캐기 📜문제 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분류 : accepted 📜풀이 처음 문제를 봤을때, 무조건 곡괭이를 순서대로 다 써야하는 줄 알았다. # [dia, iron, stone] picks = [0, 2, 1] 다이아몬드 곡괭이 없으니, 넘어가고 철 곡괭이로 10번 광물 캐기, 돌 곡괭이로 5번 광물 캐기 ❌ 잘못된 풀이 from collections import deque # [dia, iron, s..
멀티프로세서 스케줄링 멀티프로세서 스케줄링 SQMS (단일 큐 방식) MQMS (멀티 큐 방식) ❓ 병행성 concurrency 공유데이터 접근할 때, 올바른 연산 결과를 보장하기 위해(상호배제를 보장하는 위해) 락-프리(lock-free) 데이터 구조 사용. 하지만, 성능 측면에서 CPU의 개수가 증가할수록 동기화된 자료 구조에 접근하는 연산은 매우 느리게 되어 문제가 있다. 하지만, 더 많은 CPU를 추가해도 더 빨리 실행되지 않는 문제 발생! 이를 쓰레드를 이용(멀티 쓰레드 응용 프로그램)하면 더 많은 수의 CPU가 주어질 수록 더 빠르게 실행된다. ❓ Thread와 Process의 차이는? 프로세스는 독립적, 높은 수준의 격리, 내결함성 자체 메모리 공간, 리소스 및 실행 환경을 갖춘 독립적인 프로그램으로 다른 프로세..
백준, 최소 비용 구하기 백준, 최소 비용 구하기 📜문제 https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 분류 : accepted ❌ 초기 접근법 시작점에서 마지막점까지 도달할 모든 경로에 대한 비용을 탐색해 total_costs 리스트에 저장. 결과값으로 total_costs의 최솟값을 반환한다. total_costs = [] def move(start, end): queue = deque([(start, 0)]) # visited ..
3.1 점근적 표기 3. 함수의 증가 입력이 충분히 커지면 정확한 수행시간의 상수계수와 저차항은 입력 크기에 묻혀 버린다. ❓성장률 rate of growth 입렵값의 크기에 따라 함수가 얼마나 빨리 커지는지 즉, 실행시간의 성장률을 알고싶은 것! 우리가 알고 싶은건, 입력값 크기에 따른 알고리즘의 실행시간에 대한 예측이다. 프로그램을 쉽게 예측할수 있도록 불필요한 부분은 과감히 버리고 가장 중요한 부분만 추려서 함수로 간소화해야 한다. 예를 들어 0.6n²+1000n+3000 에서 n이 커질 수록 n²은 기하 급수적으로 커지게 된다. ❓접근적표기법 asymptotic notaion 상수 계수와 중요하지 않은 항목을 제거하는 표기법으로 big-Θ 표기법, big-O 표기법, and big-Ω 표기법이 있다. ❓big-Θ(T..
스케줄링 : 비례 배분 스케줄링 : 비례 배분 Proportional Share Fair Share 반환시간과 응답시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것이 목적 ❓CPU의 일정 비율을 왜 보장해줘야 할까? CPU의 일관된 성능, 일관된 응답성을 보장하는데 도움이 되기 때문이다. 반환시간 : 프로세스가 시작해서 끝날때가지 걸리는 시간 응답시간 : 요청 후 응답이 오기 시작할때까지의 시간 📌 배운 것 추첨 기법 lottery scheduling 추첨권 = 프로세스 지분 예를 들어, 총 100장의 추천권이 있다고 하자. A : 0~74까지의 티켓(75%) B : 75~99까지의 티켓(25%) 0~99 범위 내에서 20개의 난수를 발생시켰다. 스케줄링 결과는 B가 20% (4/20), A가 8..