문제 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거�� www.acmicpc.net 문제 풀이 A, B 배열이 주어 질 때, 배열의 값 순서에 크기에 따라 오름차순으로 합하여 출력하는 문제이다. 문제의 의도는 분할정복을 통해 문제를 푸는 것이지만, 2개의 배열을 입력 받고 정렬하여 출력하여도 시간 초과 없이 문제를 통과 할 수 있다. 코드 from sys import stdin if __name__ == "__main__": n, m = map(int, stdin.readline().split()) n..
문제 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 풀이 앞서 다룬 숫자 카드 문제와 달리, M개의 카드 중에 N개의 카드에 포함 되는 경우 카드의 개수를 출력하는 문제이다. 따라서 N개의 카드의 중복을 `set`으로 중복 여부를 없애는 것이 아닌, `Counter`를 통해 각 카드가 몇 개씩 존재하는지 확인하면 된다. 코드 from sys import stdin from collections import Counter if __name__ == "__main__": n..
문제 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 풀이 N개의 카드와 M개의 카드가 있을 때, M개의 카드를 순차적으로 탐색하여 N개의 카드에 해당 카드가 있다면 1, 아닌 경우는 0을 추력하는 문제이다. 이 문제는 로직이나, 알고리즘 적인 것도 아니고 파이썬에서 `in`을 사용할 때, `set` 또는 `dict`를 사용하면 빠르다는 성질만 알고 있으면 쉽게 풀 수 있다. N개의 카드의 중복인 경우는 `in`에서 시간만 소비하므로 `set`을 이용하여 중복을 제거한다. 코..
문제 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 문제 풀이 여학생의 수 N, 남학생의 수 M이 주어지고 인턴십에 참가하여 팀을 이룰 수 없는 인원 K가 주어진다. 이때 2명의 여학생과 1명의 남학생이 팀을 결성할 때, 최대 몇 팀을 구성할 수 있는지 반환하는 문제이다. 문제를 풀기 위해 다음과 같은 조건을 판단하면 된다. 팀을 구성한 여학생 2명, 남학생 1명을 반복문을 통해 제외한다. 여학생 수가 0명이면 더 이상, 팀을 구성할 수 없다. 남핵생 수가 0명이면 더 이상, 팀을 구성할 수 없다. 여학생 수 + 남학생 수가 인턴십을 참가한 인원보다 작으면 팀을 구성할 수 없..
문제 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 문제 풀이 앞서 다룬 A와 B의 경우 항상 문자열 뒤에 A나 B가 추가 되어, 뒤에 어떤 문자가 오는지에 따라 처리하야 T를 S로 만들었다. 하지만 이 문제의 경우, 다른 조건이 주어짐으로써 맨 앞에 B이거나, 맨 뒤가 A인가를 판단하여 S를 만들기 위해 현재 상태에서 2가지로 가지를 뻣어 갈 수 있다. 따라서 A와 B를 푼 로직에서, `DFS를 통해 가지를 뻣어가며 백트랙킹`을 하게 되면 문제의 답을 찾을 수 있다...
문제 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 문제 풀이 문자열 S, T가 주어질 때 2가지 규칙으로 문자열을 변경할 수 있다. 첫 번째는 문자열의 뒤에 A를 추가하는 것이고, 두 번째는 문자열을 뒤집고 뒤에 B를 추가하는 것이다. S를 T로 변경하고자 한다면 로직을 생각하기 어렵지만, T를 S로 변경하면 쉽게 풀리는 문제이다. S, T의 길이가 같을 때까지, 반복한다. T의 마지막 문자열이 A이면 `pop`한다. T의 마지막 문자열이 B이면 `pop` 후에, 문자열..
문제 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 문제 풀이 수열의 두 수를 묶어 곱한 후에 각각의 값들 합할 때, 최댓값이 되는 값을 반환하는 문제이다. 문제를 풀기 위해서는 음수는 음수 별로 곱하여 양수로 만들어주고, 0과 1에 대해 별도로 처리해 주어야 할 필요가 있다. 입력되는 숫자들을 음수, 양수, 0, 1로 분리한다. 0의 경우 존재 여부만 확인하면 되지만, 1의 경우 몇개가 존재하는지 확인하여야 한다. 1은 다른 수와 곱해도, 같은 수이므로 묶지 않고 더하는 것이 큰 수를 만들 수 있다. 0..
Operating System 운영체제는 하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이의 인터페이스 역할을 한다. 또한 프로그램이 시스템 자원에 접근하고자 할 때 권한을 가지고 있는지를 파악한다. 프로세스와 스레드 프로세스 : 현재 메모리 상에 있으며 실행 중인 프로그램을 의미한다. 스레드 : 하나의 프로세스의 자원을 공유하며 독립적으로 실행될 수 있는 작업 단위이다. 프로세스는 프로세스 별로 메모리 공간을 할당받으면Code, Data, Heap, Stack으로 구분 된다. Code : 함수, 제어문, 상수 등을 할당하는 영역. Data : Global Variable, Static Variable, Array가 할당되는 영역. Heap : 동적 할당된 변수가 할당되는 영역. Stack : Loca..