분류 전체보기 77

[운영체제] 운영체제의 역할과 목표

* 운영체제의 역할 1. 자원 관리 우리는 컴퓨터로 문서를 작성하고, 음악을 듣고, 인터넷 서핑을 한다. 이 때 키보드, 네트워크 카드, 사운드 카드 등의 컴퓨터 자원을 사용하는데, 운영체제는 이러한 자원을 응용 프로그램에 나누어주어 사용자가 원활하게 작업할 수 있도록 돕는다. 만약 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용 프로그램에 나누어준다. 2. 자원 보호 컴퓨터 내의 많은 자원을 관리하는 것뿐만 아니라 악의적인 사용자나 미숙한 사용자로부터 자원을 보호하는 것도 매우 중요하다. 고의가 아니더라도 어떤 응용 프로그램이 남의 영역을 침범한다면 다른 사람의 작업을 망치거나 데이터를 지울 수도 있기 때문이다. 이러한 비정상적인 작업으로부터..

[운영체제] 운영체제의 개념과 필요성

* 운영체제의 개념 OS(Operating System)이라고 일컫는 운영체제는 일반 컴퓨터나 노트북의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어로, 대표적인 예는 개인용 컴퓨터에서 사용하는 윈도우와 Mac OS, 대형 컴퓨터에서 사용하는 유닉스(Unix)와 리눅스(Linux) 등이다. 운영체제는 스마트폰에도 쓰인다. 이러한 운영체제를 모바일 운영체제라고 하며, 애플의 iOS와 구글의 안드로이드가 대표적이다. 이 중 iOS는 애플의 폐쇄적인 정책으로 애플 제품에만 사용되며, 안드로이드는 구글의 개방 정책으로 여러 스마트폰 제조사에서 사용하고 있다. CPU의 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 임베디드 운영체제(Embedded Operating System) 또는 임베디..

[알고리즘] 프로그래머스 - 조이스틱(Java)

코딩테스트 연습 - 조이스틱 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으..

[잡담] 파이썬 -> 자바 코테 변경

* 개요 원래 필자는 파이썬으로 코딩테스트를 준비하고 있었지만, 정말 가고 싶은 기업들이(네이버, 라인...) 파이썬을 코테 응시 언어로 지정을 해두지 않았다 !! 따라서 원래 필자의 직무 언어가 자바이기도 하고, 파이썬은 그저 코테용 언어였기 때문에... 오늘부터 자바로 코딩테스트를 준비하고자 한다. 따라서 앞으로의 프로그래머스, 백준 문제 리뷰는 자바를 통해 진행될 것이고, 자료구조, 알고리즘 포스팅도 자바 기준으로 진행될 것이다. 자바로 코딩 테스트를 준비한다는 것은 매우 힘들다. 자바는 파이썬처럼 데이터 swap도 불편하고, 경우의 수를 구하기 위한 순열 & 조합과 관련된 라이브러리도 존재하지 않는다. 따라서 "직접" 구현해야 한다. 게다가 문자열 관련해서 문제를 풀 때는 코드가 쓸데없이 길어지기..

잡담 2022.12.15

[알고리즘] 프로그래머스 - 주식가격(Python)

코딩테스트 연습 - 주식가격 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. * 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. * 입출력 예 prices = [1, 2, 3, 2, 3] return = [4, 3, 1, 1, 0]..

[알고리즘] 프로그래머스 - 게임 맵 최단거리(Python)

코딩테스트 연습 - 게임 맵 최단거리 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 위 그림에서 검..

[알고리즘] 프로그래머스 - 전력망을 둘로 나누기(Python)

코딩테스트 연습 - 전력망을 둘로 나누기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 n개의 송전탑이 전선을 통해 하나의 트리 형태로 연결되어 있습니다. 당신은 이 전선들 중 하나를 끊어서 현재의 전력망 네트워크를 2개로 분할하려고 합니다. 이때, 두 전력망이 갖게 되는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 송전탑의 개수 n, 그리고 전선 정보 wires가 매개변수로 주어집니다. 전선들 중 하나를 끊어서 송전탑 개수가 가능한 비슷하도록 두 전력망으로 나누었을 때, 두 전..

[알고리즘] 프로그래머스 - 피로도(Python)

코딩테스트 연습 - 피로도 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다...

[알고리즘] 프로그래머스 - 구명보트(Python)

코딩테스트 연습 - 구명보트 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 ..

[알고리즘] 순열 & 조합 알고리즘(Python)

* 개요 순열과 조합 알고리즘은 대표적인 완전 탐색 알고리즘으로, 경우의 수를 구할 때 사용하는 알고리즘이다. 순열과 조합은 실제 코딩 테스트에서 필요한 경우가 많기 때문에, 어떻게 사용할 수 있는지를 알고 있어야 한다. 사실 순열과 조합은 재귀 함수 혹은 반복문을 이용해서 직접 구현할 수도 있지만, 실제 코딩 테스트에서 이를 직접 구현하는 것은 매우 번거롭다. 먼저 순열에 대해서 확인해보자. 순열이란 서로 다른 n개에서 r개를 선택하여 일렬로 나열하는 것을 의미한다. 그렇다면 조합은 무엇인가? 조합이란, 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것을 의미한다.순열에서는 [1, 2, 3]에서 서로 다른 2개의 원소를 뽑아 나열할 때 가능한 모든 순서를 고려하기 때문에, [1, 2],..