[프로그래머스 - LV2] [3차] 파일명 정렬
·
알고리즘
문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/17686#문제 설명1. `HEAD` : 문자로만 이뤄진 부분2. `NUMBER` : 숫자로만 이뤄진 부분3. `TAIL` : 그 나머지 파일명을 위의 세 부분으로 나눠서 파일들을 정렬해야한다. 정렬 방법1. HEAD를 사전순으로 정렬(대소문자 구분 X)2. NUMBER를 오른차순으로 정렬3. 1, 2번이 모두 같으면, 기존에 주어진 순서를 유지 문제 풀이 1. file들을 `head`, `number`, `tail`로 구분해 문자일 때, 숫자일 때 그 나머지를 각각 넣어준다.- 여기서 char을 쓰면 숫자/문자 구분이 편한 것 같아 자주 쓰고 있다.2. 위의 정렬대로 정렬한다.- 대소문..
[프로그래머스 - LV2] [1차] 프렌즈4블록
·
알고리즘
문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/17679 문제 설명 - 주어진 `m` x `n` 보드에서 같은 모양인 2x2 블록을 찾아 제거- 제거된 후 제거된 공백을 위의 블록들이 떨어져 채움- 제거된 블록이 없을 때까지 반복하고, 제거되 블록 개수를 출력한다. 문제 풀이 1. `HashMap`으로 모양 별로 좌표를 모아 기록한다.2. hash의 각 노드에서 2x2 블럭인 `(x + 1, y)`, `(x, y + 1)`, `(x + 1, y + 1)` 가 같은 `key`를 가진다면, 제거할 좌표를 모은 `toRemove`에 추가한다.3. 모든 노드들을 검사한 후, `map`의 노드들에서 `toRemove` 에 있는 노드를 모두 제..
[프로그래머스 - LV2] 이모티콘 할인행사
·
알고리즘
문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/150368문제카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다.이모티콘 플러스 서비스 가입자를 최대한 늘리는 것.이모티콘 판매액을 최대한 늘리는 것.1번 목표가 우선이며, 2번 목표가 그 다음입니다.이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다.n명의 카카오톡 사용자들에게 이모티콘 m개를 할인하여 판매합니다.이모티콘마다 할인율은 다를 수 있으며, 할인율은 10%, 20%, 30%, 40% 중 하나로 설정됩니다.카카오톡 사용자들은 다음과 같은 기준을 따..
[OS] CPU 스케쥴링
·
CS
CPU 스케쥴링OS가 프로세스에게 CPU 자원을 배분하는 것ex) 입출력 집중 프로세스의 우선순위가 CPU 집중 프로세스보다 높다"스케쥴링 큐"를 통해 우선순위를 지정할 수 있다.이런 스케쥴링 큐는 준비 큐와 대기 큐로 이뤄져 있다.- 준비 큐(Ready Queue): CPU 이용을 위해 대기 중인 프로세스들- 대기 큐(Wating Queue): 입출력 장치 이용을 위해 대기 중인 프로세스들 선점형과 비선점형 스케쥴링1. 선점형 스케쥴링(Preemptive Scheduling)하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식ex) 라운드 로빈, SRT, 다단계 큐, 다단계 피드백 큐- 비교적 응답이 빠르다는 장점이 ..
[OS] Thread
·
CS
Thread(쓰레드)쓰레드는 프로세스를 구성하는 실행 흐름의 단위하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있다. 실행 흐름이 여러 개라면?실행 흐름이 여러 개인 프로세스(멀티 스레드 프로세스)는 프로세스를 이루는 여러 명령어를 동시에 실행이 가능하다.예를 들어- 한 쓰레드는 웹 페이지를 렌더링- 다른 쓰레드는 파일을 다운로드- 또 다른 쓰레드는 사용자 입력을 처리 쓰레드의 구성요소쓰레드는 독립적으로 실행되기 위해 최소한의 정보를 가지고 있다.쓰레드 ID: 쓰레드를 식별하는 고유 번호프로그램 카운터(PC): 다음에 실행할 명령어의 주소레지스터 값: 쓰레드의 현재 작업 상태스택: 함수 호출과 지역 변수를 저장하는 공간쓰레드마다 각각의 스택 영역과 프로그램 카운터를 가져 각자 실행이 가능해진다.이때 프..
[OS] 프로세스 상태와 계층 구조
·
CS
프로세스 상태생성 상태, 준비 상태, 실행 상태, 대기 상태, 종료 상태 1. 생성 상태이제 막 메모리에 적재되어 PCB를 할당 받은 상태준비 완료 되면 준비 상태가 된다. 2. 준비 상태당장이라도 CPU를 할당받아 실행할 수 있지만, 자신의 차례가 아니라 기다리는 상태자신의 차례가 되면 실행 상태가 된다.- `준비 -> 실행` 상태로 바뀌는 것 = `디스패치` 라고도 함 3. 실행 상태CPU를 할당받아 실행 중인 상태- 할당된 시간 모두 사용 시, 타이머 인터럽트가 발생해 준비 상태로 이동한다.- 실행 도중 입출력 장치를 사용하면, 입출력 작업이 끝날 때까지 대기 상태가 된다. 4. 대기 상태(block state)프로세스가 실행도중 입출력 장치를 사용하는 경우. 입출력 작업이 느려 이 경우 대기 상태..
[OS] 프로세스
·
CS
프로세스(Process)실행 중인 프로그램을 뜻한다.실행 되기 전 프로그램은 그저 보조 기억 장치 속 데이터 덩어리일 뿐 1) 포그라운드 프로세스사용자가 볼 수 있는 공간에서 실행되는 프로세스 2) 백그라운드 프로세스사용자가 볼 수 없는 공간에서 실행되는 프로세스 백그라운드 프로세스는 2가지 종류로 나눌 수 있다.i) 사용자가 직접 상호작용 가능한 백그라운드 프로세스ii) 사용자와 상호작용 하지 않고 그저 정해진 일만 수행하는 프로세스 ex) 데몬(daemon), 서비스 등 PCB(프로세스 제어 블록)프로세스 관련 정보를 저장하는 곳- 프로세스 생성 시 커널 영역에 함께 생상되었다가 종료 시 폐기된다. 모든 프로세스 실행을 위해서는 CPU가 필요하지만, 자원은 한정되어 있다.그래서 프로세스들이 돌아가며..
[OS] 운영체제란
·
CS
자원이란?프로그램 실행에 있어 마땅히 필요한 요소들. 컴퓨터 4가지 핵심 부품 포함 운영체제란?실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 프로그램=> 메모리 커널영역에 적재되어 실행ex) CPU 관리, 메모리 적재, 입출력 장치 제공 개발자는 왜 OS를 알아야 할까?내가 만드는 프로그램이 OS의 어떤 도움을 받는 지, 어떻게 OS의 도움을 받는 지 알아야 하기 때문이다. ex) 오류 메세지 OS의 핵심적 서비스 1. 자원에 접근 및 조작2. 프로그램이 올바르고 안전하게 실행 이런 핵심 서비스는 Kernel에서 담당한다. UI(User Interface)커널에는 포함이 안되지만 운영체제에는 포함이 된다. 사용자와 컴퓨터 간의 통로사용자가 직접 실행하는 프로그램은 프로그..
[프로그래머스 - LV2] [1차]뉴스 클러스터링
·
알고리즘
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/17677#문제여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다.개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다.카카오 첫 공채..'블라인드' 방식 채용카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용카카오, 블라인드 전형으로 신입 개발자 공채카카오 공채, 신입 개발자 코딩 능력만 본다카카오, 신입 공채...
[프로그래머스 - LV1] 숫자 문자열과 영단어
·
알고리즘
문제 링크">문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/81301 문제">문제네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.1478 → "one4seveneight"234567 → "23four5six7"10203 → "1zerotwozero3"이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는..