본문 바로가기

CS

(22)
프로그래머스 H-Index - 1 def solution(citations): n = len(citations) h = n while (h > 0): if sum(citations) >= n * h: return h h -= 1 return 0https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이..
[WIL] 20240325 ~ 20240329 7주차 정리 모의면접 준비 자료구조 & 알고리즘 1. 자료구조에 대해서 간단하게 정의해주세요. 자료구조는 컴퓨터 과학(CS)의 핵심 개념으로, 데이터를 저장하고 관리하는 방법입니다. 1-1. 그러면 자료구조를 알아야 하는 이유에 대해 말씀해주세요 자료구조를 잘 이해하면 효율적인 소프트웨어를 개발할 수 있습니다. 메모리를 효율적으로 사용하면서 데이터를 빠르고 안정적으로 처리할수록 효율적인 소프트웨어가 될 수 있고 이것이 궁극적인 목표이기 때문입니다. 2. 시간 복잡도와 공간 복잡도의 차이는 무엇인가요? 3. 재귀 함수에 대해서 간단하게 정의해주세요. 3-1. 그러면 재귀 함수는 어떤 상황에서 사용하나요? 예시를 들어 설명해 주세요. 4. 배열과 연결 리스트의 차이는 무엇인가요? 각각의 장단점도 설명해주실 수 있나요? ..
[TIL] 20240329 33일차 1. 지수 백오프 알고리즘을 설명하시오 지수 백오프는 네트워크 상에서 일시적인 오류가 발생했을 때, 재시도 간격을 점진적으로 늘려가며 재시도를 수행하는 알고리즘이다. 이 방법은 주로 네트워크의 혼잡을 피하거나, 서버가 과부하 상태일 때 과도한 요청을 방지하기 위해 사용된다. 이 방법의 핵심은, "지수적으로" 대기 시간을 늘리는 것이다. 네트워크 통신 중 오류가 발생할 경우, 클라이언트는 보통 재시도를 통해 이를 해결하려고 한다. 하지만 모든 클라이언트가 동시에 재시도를 한다면, 서버는 한꺼번에 많은 요청을 처리해야 하므로 부하가 증가할 수 있다. 이러한 현상을 '재시도 폭주'라고 하며, 이를 방지하기 위해 지수 백오프가 필요하다. 지수 백오프는 '재시도 폭주'를 방지하고, 네트워크와 서버의 부하를 줄이는..
[TIL] 20240328 32일차 모의면접 Lv. 2 준비 1. 멀티 스레딩이 무엇이고 사용하는 이유는? 하나의 프로세스 내에서 2개 이상의 스레드를 사용해 작업을 처리하는 방식입니다. 기본적으로 시스템 처리량 증가를 위해 사용합니다. 멀티 프로세스와 다르게 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원 소모가 적게, 효율적으로 관리할 수 있고 메모리의 Code, Data, Heap 영역을 공유하기 때문에 데이터 통신이 간단한 이점이 있습니다. 2. 데드락은 무엇인가? 2개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해 다음 처리를 하지 못하고 무한히 다음 자원을 기다리게 되는 상태입니다. 발생 조건으로 4가지가 있으며, 4가지를 모두 충족해야 데드락이 발생합니다. 상호 배제, 점유 대기, 비선점, 순환 대기가 있습니..
[TIL] 20240327 31일차 프로그래머스 프렌즈4블록 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제를 보고 생각한 흐름은 이랬다. 1. 원본 input 값(board)을 사용하면서 진행 (→ 실패. use_board를 정의하고 이를 사용하여 해결) 2. 전체 과정 분석 ① 2x2 사이즈 영역 내에 같은 문자가 있는 경우 index값 별도 저장 (리스트 'checked') ② 'checked'에 저장해둔 index 값을 확인하며 2x2 사이즈 영역 내의 같..
[TIL] 20240326 30일차 모의면접 LEVEL 1 준비 자료구조 & 알고리즘 1. 자료구조에 대해서 간단하게 정의해주세요. 자료구조는 컴퓨터 과학(CS)의 핵심 개념으로, 데이터를 저장하고 관리하는 방법입니다. 1-1. 그러면 자료구조를 알아야 하는 이유에 대해 말씀해주세요 자료구조를 잘 이해하면 효율적인 소프트웨어를 개발할 수 있습니다. 메모리를 효율적으로 사용하면서 데이터를 빠르고 안정적으로 처리할수록 효율적인 소프트웨어가 될 수 있고 이것이 궁극적인 목표이기 때문입니다. 2. 시간 복잡도와 공간 복잡도의 차이는 무엇인가요? 3. 재귀 함수에 대해서 간단하게 정의해주세요. 3-1. 그러면 재귀 함수는 어떤 상황에서 사용하나요? 예시를 들어 설명해 주세요. 4. 배열과 연결 리스트의 차이는 무엇인가요? 각각의 장단점도 설명해주실..
[TIL] 20240325 29일차 프로그램 복잡도 시간, 공간은 반비례 성향을 가진다. 즉, 시간 복잡도가 감소하면 공간 복잡도가 증가하고 시간 복잡도가 증가하면 공간 복잡도가 감소함. 그러나 기술이 발전함에 따라 저장 공간은 충분한 크기를 가지게 되었으므로 프로그램 설계에 있어 시간 복잡도가 핵심이 된다. 알고리즘 적용 시 시간 복잡도를 더 중점으로 생각 공간 복잡도 가. 정의: 프로그램을 실행 및 완료하는 데에 필요한 저장 공간의 크기(양) 나. 저장 공간의 분류 1. 고정 공간 (Fixed Static Part) 코드 저장 공간. 단순 변수 및 상수가 저장되는 공간. Cp 2. 가변 공간 (Variable Dynamic Part) 프로그램 실행 중 동적으로 필요한 크기가 변화하는 공간. Sp 총 필요 공간 S(p)는 고정 공간과 가..
[WIL] 20240318 ~ 20240322 6주차 정리 CS 컴퓨터 구조 프로세스 / 스레드 DB 구조 및 유형 DBMS 기능 및 종류 자료구조 네트워크 OSI 공간 자원 / 공간 복잡도 시간 자원 / 시간 복잡도