본문 바로가기

분류 전체보기411

[C++] 백준 1080번 : 행렬 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 문제풀이 단순하게 입력받은 행렬들을 서로 비교해서 다르면 3x3 단위로 1과 0을 뒤집어주면 되는 문제였다. 값을 바꿔준 뒤에 다르면 단순하게 -1을 출력해주면 된다. 느낀 점 오랜만에 코딩하는 것이었는데 중요한 것 두 가지를 배운 것 같다. 1. ios_base::sync_with_stdio()는 iostream와 cstdio를 동기화해주는 것! 이 문제에서 값을 입력받을 때 scanf을 썼는데 false로 .. 2022. 1. 17.
[알고리즘] 배낭 채우기 (Knapsack Problem) 도둑이 보석가게에 배낭을 메고 침입했다. 배낭의 최대 용량은 W이며, 이를 초과해서 보석을 담으면 배낭이 찢어질 것이다. 각 보석들의 무게와 가격은 알고 있다. 배낭이 찢어지지 않는 선에서 가격 합이 최대가 되도록 보석을 담는 방법은? 위의 문제는 대표적인 배낭 채우기 문제이다. 찾아보니 배낭 채우기 문제는 두 가지 유형으로 나뉜다고 한다. 물건(보석)을 자를 수 있을 때의 "Fractional Knapsack"과 자를 수 없을 때의 "0-1 Knapsack Problem"로 나뉜다고 한다. 자를 수 있는 경우는 보통 그리디 알고리즘으로 해결한다고 한다. 이 글에서 다루는, 그리고 보통 많이 다루는 배낭 채우기 알고리즘은 자를 수 없는 경우이다. 배낭 채우기 문제를 푸는 방법은 여러 가지가 있다. 모든 .. 2021. 11. 24.
[C++] 백준 11279번 : 최대 힙 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 문제 풀이 힙을 구현하는 문제이다. 우선순위 큐를 사용하면 간단하게 해결할 수 있다. 느낀 점 기본적인 자료구조이다. 코드 #include #include using namespace std; int n; priority_queue pq; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; while (n--) {.. 2021. 11. 12.
[C++] 프로그래머스 : 튜플 https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 문제풀이 문제에 대한 이해를 묻는 문제였다. 입력받는 각 string은 튜플에 대한 원소들을 배열한다. 순서가 뒤바뀔 수 있지만 결과적으로 우선순위가 높은(먼저 오는) 숫자는 더 많이 출현한다. 숫자마다 몇 번 출현하는지 확인하고 정렬한 다음에 answer 벡터에 넣어주면 된다. 느낀 점 처음 코드를 구현할 때.. 2021. 11. 8.
[C++] 백준 14425번 : 문자열 집합 https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 풀이 기본 자료구조 문제이다. n번 입력받은 문자열 중 m번 입력한 문자열이 있는지 체크하는 문제이다. Set으로 구현하면 매우 쉽다! 느낀 점 기본적인 자료구조 문제이다. 코드 #include #include #include using namespace std; int n, m, cnt = 0; set s; int main() { ios_base::sync_.. 2021. 11. 6.
쉽게 배우는 운영체제 : 가상 메모리 관리 (9장) ■ 요구 페이징 · Process가 요청할 때 메모리로 가져오는 것 → 메모리를 효율적으로 관리, 응답 속도 향상의 이유로 process 일부만 가져옴 (나머지는 필요할 때) ■ 가상 메모리 · 물리 메모리 + 스왑 영역 (Harddisk or 메모리 관리자의 영역) → 스왑-in : 메모리로 data를 가져오는 것 ↔ 스왑-out ■ Flag Bit (Access-Modifed-Valid-Read-Write-Excute bit) · 접근 비트(참조 비트) : 페이지의 사용 여부 · 변경 비트 : 페이지의 변경 여부 · 유효 비트(현재 비트) : 요구하는 페이지의 위치를 표시 → 0 : 메모리에 위치, frame num 저장 / 1 : 스왑 영역에 위치, page의 주소 저장 · 읽기, 쓰기, 실행 비트.. 2021. 10. 29.