본문 바로가기

전체 글45

프로그래머스 | Level3. 징검다리 건너기 (이분탐색) ✅ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/64062 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 📌 접근 방법 이분탐색 stones 배열에 있는 원소들의 값은 1이상 200,000,000 이하의 자연수다. 따라서 니니즈 친구들이 최대 200,000,000명이 건널 수 있다. 정답은 1~200,000,000 사이에 존재 하므로, 이분탐색으로 1~200,000,000 사이를 탐색하며 정답이 되는지 확인한다. 아래 코드에서 cntNum 함수는 현재 mid값이 정답이 될 수 있는지 확인하는 함수다. 동작을 설명하자면, stones에 저장되어있는 값에서 mid.. 2021. 8. 27.
알고리즘 | 이분탐색 개념과 예제 + 심화 📌 개념 다지기 이분 탐색 탐색 기법중 하나로, 탐색하고 싶은 범위를 두 부분으로 분할해서 찾는 방법이다. 두 부분으로 계속 분할해서 조건에 맞는지 찾아가기 때문에, 시간 복잡도가 O(log n)으로 매우 빠른편이다. ✔️탐색하는 방법 배열이 정렬(sort)되어 있어야한다. left와 right를 배열의 양 끝으로 설정한다. mid = (left + right) / 2 로 설정하여, mid 값이 기준값보다 작거나 큰지 확인한다. (오름차 배열 정렬되어있을 때) mid 값이 기준값 보다 작다면, left를 (mid+1)로 설정한다. (오름차 배열 정렬되어있을 때) mid 값이 기준값 보다 크다면, right를 (mid-1)로 설정한다. left > right 가 될 때 까지 2,3 번을 반복한다. ✏️이분.. 2021. 8. 26.
Sass | 프로젝트를 위한 아키텍쳐 만들기 Sass의 이전에는 ... CSS로만 웹을 구현했을 때는, 간단한 프로젝트의 경우에 한개의 CSS파일에 넣어 관리해도 문제가 없지만, 프로젝트의 규모가 커질 경우, CSS파일의 크기가 매우 커지고 복잡해지기 때문에 관리가 어려웠다. 또한 CSS파일을 파트별로 분할한 다음 `@import` 해줄 수는 있지만, 이는 클라이언트가 직렬로 파일을 다운로드 받기 때문에 매우 느리고 성능에 문제가 생겼다. Sass의 탄생으로 ! CSS 전처리기인 Sass의 탄생으로 성능에 영향을 주지 않고 코드를 나누어 여러 개의 파일에 담을 수 있게 되었다. 이 덕분에 유지 보수가 매우 쉬워졌고, 효율적으로 프로그래밍을 할 수 있게 되었다. @use 와 @forward @import 와 유사하게, Sass파일을 첨부하지만, 기능.. 2021. 8. 24.
프로그래머스 | Level 2. 거리두기 확인하기 ✅ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/81302 ✏️ 조건 두 사람의 맨해튼 거리가 2 초과여야 거리두기를 지킨 것이다. 두 테이블 T1, T2가 행렬 (r1, c1), (r2, c2)에 각각 위치하고 있다면, T1, T2 사이의 맨해튼 거리는 |r1 - r2| + |c1 - c2| 두 사람 사이에 파티션이 있다면, 지나갈 수 없으므로 거리두기를 지킨 것이다. 대기실은 5개이고, 각 대기실의 크기는 5x5 ✏️ My Solution - DFS 📌 접근법 DFS로 접근 사람의 위치 정보를 DFS에 보내서 해당 위치에서 거리 2 안에 사람이 있는지 확인. 두 사람의 거리가 맨해튼 거리가 아니라면, 무조건 0을 반환해야함. 파티션이 있는 경우.. 2021. 8. 24.
[운영체제] OS 역사 | Multi-programming system & Multi-tasking system 📌OS 역사 초기 시스템엔 OS가 없다 Batch Processing System Multi - Programming System Time - Sharing / Multi - Tasking System 현재 2. Batch Processing System 작은 메모리 레지던트 OS / 디스크 기반 OS 기계가 읽을 수 있는 데이터를 최초로 처리하던 방식 데이터를 위한 기계가 읽을 수 있는 매개체의 최초의 이용 Jobs 프로그램, 컴파일러를 Job이라고 부름 펀치 카드 카드 리더기로 프로세스를 동작했음 Off-line 프로세싱 입출력 장치에 의해 성능이 좌우됨 나~중에 마그네틱 테이프 리더기가 카드 리더기 대신에 사용되었다. 3. Multi Programming CPU와 IO가 Concurrently(병렬.. 2021. 7. 10.
[운영체제] OS란 무엇인가 📌 OS 란 무엇인가 OS (operating system) 사용자가 사용하는 Application Program과 Hardware를 연결하는 것 쉽게 말하면, 아래 그림과 같이 사용자가 프로그램을 사용할 수 있도록 하드웨어 자원과 소프트웨어 자원을 운영 관리하며 편리함을 제공한다. 따라서 하드웨어를 몰라도 컴퓨터를 잘 사용할 수 있도록 한다. 종류 : window, Linux, MacOS 등 📌 OS가 하는 일 Sharing : 한정된 자원을 여러 프로세스가 공유할 수 있도록 관리함 Protection : 한 자원에 여러 프로세스가 동시에 수정/접근 하지 않도록 보호함 Fairness : 한 프로세스가 자원을 독점하지 않게 함 Efficiency : Power을 효율적으로 사용하여 Energy 낭비를 .. 2021. 7. 10.