목록CS공부
Step-by-Step

운영체제 하드웨어를 효율적으로 사용할 수 있게 관리하는 소프트웨어 컴퓨터 사용자와 하드웨어 간 인터페이스로 동작하는 시스템 소프트웨어 컴퓨터 시스템의 자원들을 효율적으로 관리하여, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임 프로그램 컴퓨터에서 어떤 작업을 실행할 수 있는 정적의 상태 파일 (exe 파일) 하드디스크 등에 저장되어 있는 실행 코드 보조기억장치에 존재하며 실행되기를 기다리는 명령어와 정적인 데이터 묶음 사용자가 원하는 일을 처리할 수 있도록 올바른 수행 절차를 표현해 놓은 명령어들의 집합 프로세스 실행중인 프로그램 운영체제로부터 실행에 필요한 자원을 할당받은 것 일반적으로 작업(Job) 또는 태스크(Task)라고 함 메모리 구조 CODE 영역..

메모리 전자 회로에서 데이터나 상태, 명령어 등을 기록하는 장치 메모리 계층 하위계층으로 갈수록 용량이 늘어나고, 가격이 저렴하지만, 속도가 느림 상위계층으로 갈수록 용량은 적고, 가격이 높지만, 속도가 빠름 레지스터와 캐시는 CPU 내부에 존재 → CPU에 빠르게 접근 가능 주기억장치(=메모리)는 CPU 외부에 존재 → 레지스터와 캐시보다 CPU에 늦게 접근 보조기억장치(=하드디스크)는 CPU에 접근할 방법이 없음 하드디스크 데이터를 메모리로 이동시키고, 메모리에서 접근해서 가능 = "느린 접근" 1. 보조기억장치 물리적인 디스크가 연결되어있는 저장장치 주기억장치보다는 느림 전원을 끄더라도 저장된 데이터가 사라지지 않은 비휘발성이며, 영구적으로 보관 가능 대표적으로 HDD와 SSD가 있음 HDD(Har..
데이터베이스 DB 구조화된 정보 또는 데이터의 조직화된 모음 여러 사람이 공유하여 사용할 목적으로 체계화해 통합 관리하는 데이터의 집합 데이터베이스관리시스템 DBMS 데이터베이스를 관리하고 운영하는 소프트웨어 사용자 질의를 처리해주는 다양한 컴파일러 존재 DDL 컴파일러, DML 컴파일러, DML 컴파일러 등 RDB vs NoSQL RDB 데이터를 2차원 형태의 테이블로 표현하는 데이터베이스 엄격하게 정해진 스키마에 따라 데이터를 저장하기 때문에 명확한 구조를 보장함 스키마 : DB를 구성하는 데이터 개체, 속성, 관계 등 다양한 제약조건 정의 명확한 스키마가 사용자와 데이터에게 중요한 경우 적절함 수직적인 확장이 가능함 ex) 서버 성능 향상 - CPU 업그레이드 수평적인 확장이 어려움 RDBMS : ..
클래스 객체를 만들어내기 위한 틀 변수와 메소드의 집합 객체 클래스가 실제로 구현된 인스턴스 인스턴스 클래스를 바탕으로 구현된 구체적인 실체 객체를 소프트웨어에 실체화 한 것 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것 더보기 클래스의 타입으로 선언되었을 때 객체라 부르고, 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부름 객체지향 프로그래밍 Object Oriented Programming - OOP 객체들의 상호작용으로 서술하는 프로그래밍 기법 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 기법 객체지향 프로그래밍의 장단점 장점 코드 재사용 용이 (상속) 유지보수의 용이성 (캡슐화) 대형..

특정 구간에 있는 N개의 수들의 합을 구하는 경우 O(N)의 시간 복잡도가 생긴다. 얼핏 보면 여기서 더 좋은 방법이 있을까? 싶지만, 있다. (이번에 알게 되었음..) 시간을 절약하기 위해서는 특정 구간을 미리 알고 있으면 좋은데, 이때 세그먼트 트리를 사용한다. ※예를들어 0~4번째 수의 합과 5~9번째 수의 합을 알고 있다고 가정하자. 4~9의 합을 구하려면 원래는 6개의 숫자를 모두 꺼내서 더하는 6번의 작업을 거쳐야 하는데, 해당 방법을 사용하면 4번째 숫자와 5~8번째 합을 꺼내서 더하는 작업 2번만 수행하면 된다. 세그먼트 트리 (Segment Tree) 일정 간격에 대한 정보를 저장하는데 사용하는 트리 데이터 구조 특정 구간의 합을 구하는 작업시 유용하게 사용됨 세그먼트 트리 형태 1. F..
문제를 풀다보면 특정 값으로 나눈 나머지값을 구하라는 문구를 많이 접하게 되었다. 자료형 범위를 넘어가지 않도록 조건을 제시해 준 것인데, 만약 전체 곱의 나머지를 구하라고 하면, 전체 곱이 나오기 전에 오버플로우가 발생할 수 있다. 이때 사용하는 것이 모듈러 연산이다. 모듈러 연산 (Modular Arithmetic) 어떤 한 숫자를 다른 숫자로 나눈 나머지를 구하는 연산 모듈러 합동 (Modular Congruent) 두 A,B 숫자가 M을 모듈러한 결과 값이 같다면 모듈러 합동관계라고 한다. A mod M = b mod N A ≡ B mod M 모듈러 합동식 A = B + K * M (K는 정수) 이 식에서 B를 이항하게 되면, A - B = K * M 두 정수 A, B와 양의 정수 M에 대해 다음..

거리두기를 잘 지켜서 앉아있는지 확인하기 위한 코드를 구현하는 문제이다 제한사항을 보면, P는 사람 O는 빈테이블 X는 파티션이다 모든 값은 5X5로 주어지고, 어느 한 곳에서라도 거리두기가 지켜지지 않으면 0이 된다 처음에는 너비우선 탐색만 이용하였는데, 파라미터 전달이 너무 많고 가독성이 떨어져서 효율적인 코드 작성을 하기 위해 인터넷을 참조하여 여러 클래스와 메소드를 이용하였다 사용한 클래스와 메소드 정리 1. isCorrect : 각 배열이 거리두기를 잘 지키고 있는지에 따라 값 리턴 - 0 or 1 2. bfs : 해당 배열의 특정 부분(P값)을 중심으로 조건에 따라 거리두기가 잘 지켜져 있는지 확인 3. Point : bfs에서 사용할 x, y값의 좌표를 담은 클래스 - 검사할 좌표를 담기 위..

처음에는 ArrayList를 이용해서 배열을 넣고, 완전 탐색을 이용하였다 하지만 시간 초과 + 정답 오류 가 계속 반복되어 나타나는 걸 보고 구글링을 시도하였다.....(최후의 수단) 제한 조건을 자세히 보면 number의 값이 1,000,000자리까지 나올 수 있는데, 완전 탐색을 이용하면 최악의 경우에 1,000,000C999,999의 경우의 수가 나올 수 있기 때문에 절대 사용 금지이다 풀이 방법은 다음과 같다 class Solution { public String solution(String number, int k) { StringBuilder sb = new StringBuilder(); int idx = 0; int max = 0; for(int i=0; i