반응형

전체 보기 216

[ 운영체제] 운영체제 시작하기

1. 운영체제를 알아야하는 이유 우리가 사용하는 모든 컴퓨터에는 운영체제가 설치되어있다. 대표적인 데스크토 운영체제로는 윈도우와 맥, 리눅스가 있고 스마트폰 운영체제로는 안드로이드와 IOS가 있다. 컴퓨터 부품들은 운영체제의 지휘하에 작동한다. 1.1 운영체제란 모든 프로그램은 하드웨어를 필요로한다. 이때 프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템자원 혹은 자원이라고한다. 컴퓨터구조에서 배웠던 CPU, 메모리 등 모두 시스템 자원이라고 할 수 있다. 여기서 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램이 운영체제이다. 운영체제도 하나의 프로그램이다. 그래서 운영체제 또한 메모리에 적재되어야한다. 하지만 운영체제는 특별하기 때문에 메모리내의 커널영역이라는..

공부/운영체제 2023.01.11

[ 컴퓨터구조 ] 데이터

1. 0과 1로 숫자를 표현하는 방법 컴퓨터는 0과 1로 모든 정보를 표현하고 이해한다. 1.1 정보단위 컴퓨터는 0과1밖에 이해하지 못한다. 0과 1을 나타낸느 가장 작은 정보 단위를 비트라고한다. n개의 비트가 있을 때 2^n개의 정보를 표현할 수 있다. 우리가 실핸하는 모든 프로그램은 수십, 수백만 비트로 미루어져있다. 하지만 우리가 프로그램의 용량을 말할때 23238432981비트야! 라고 말하지는 않는다 ㅋ 1바이트(byte) - 8비트 1킬로바이트(kB) - 1000비트 1메가바이트(MB) - 1000킬로바이트 1기가바이트(GB) - 1000메가바이트 1테라바이트(TB) - 1000기가바이트 * 워드(word) : CPU가 한번에 처리할 수 있는 데이터의 크기이다. 대부분의 컴퓨터는 32비트혹..

[ Pandas ] 산술연산 (시리즈, 데이터프레임)

판다스 객체의 산술연산은 내부적으로 3단계의 프로세스를 거친다. 행/열 인덱스를 기준으로 모든 원소를 정렬한다. 동일한위치에 있는 원소끼리 일대일로 대응시킨다. 대응이되는 원소끼리 연산을 처리한다. (이때 대응되는 원소가 없다면 NaN으로 처리) 1. 시리즈연산 1.1 시리즈 vs 숫자 시리즈 객체에 어떤 숫자를 더하면 시리즈의 개별원소레 각각 숫자를 더하고 계산한 결과를 시리즈 객체로 반환한다. + - % * 모두 가능하다. Series객체 + 연산자 + 숫자 그냥 계산식 쓰듯이 자연스럽게 써주면된다. 1.2 시리즈 vs 시리즈 시리즈의 모든 인덱스에 대하여 같은 인덱스를 가진 원소끼리 계산하여 새 시리즈를 반환한다. import pandas as pd # 딕셔너리 데이터로 판다스 시리즈 만들기 stu..

[ 컴퓨터구조 ] 컴퓨터구조 시작하기

1. 컴퓨터구조를 알아야하는 이유 컴퓨터구조를 왜 배워야할까? 배워야하는 이유를 모르면 공부가 노잼이다. 근데 공부해야하는 이유를 공부하는것도 노잼이다 ㅋㅋ 컴퓨터구조는 야매개발자들은 잘 모르는!! 실력자 개발자들이 되려면 알아야하는! 기본 지식이다. 1.1 문제해결 공부를 좀 해본사람은 알테지만 예제코드를 그대로 쳐도 코드가 제대로 안돌아갈 때가 있다. 이런 상황은 실무에서도 일어난다. 이런 경우레는 코드의문법적인 이유는 아닐 것이다. 하지만 코딩의 문법만 아는사람은 이를 해결할 수 없다.. 하지만 컴퓨터구조를 이해하고 있다면 문제상황을 빠르게 진단할 수 있고, 문제해결의 실마리를 다양하게 찾을 수 있다. 글구 이를 기업들도 알고있기 때문에 기술면접에서 많이 물어보기도한다. 컴퓨터구조는 코더가 아닌 개..

[ Pandas ] 인덱스 활용

1. 특정 열을 행 인덱스로 설정 set_index()메소드를 사용하여 데이터 프레임의 특정 열을 행 인덱스로 설정한다. 단,원본 데이터 프레임을 바꾸지 않고 새로운 데이터 프레임 객체를 반환하는 점에 유의한다. inplace=True를 추가하면 다시 지정이된다. DataFrame객체.set_index(['열이름'] 또는 '열이름') 2. 행 인덱스 재배열 reindex()메소드를 사용하면 데이터프레임의 행 인덱스를 새로운 배열로 재지정할 수 있다. 이 또한 새로운 데이터 프레임 객체를 반환한다. DataFrame객체.reindex(새로운 인덱스 배열) 기본 데이터 프레임에 존재하지 않은 행 인덱수가 새롭게 추가되는 경우 그 행의 데이터 값은 NaN 값이 입력된다. 그 모양이 맘에 안든다면 인자로 fil..

[ Pandas ] 판다스 자료구조 (시리즈, 데이터 프레임)

DataFrame객체.loc[행인덱스, 열이름] DataFrame객체.iloc[행번호, 열번호] 데이터는 형태나 속성이 매우 다양하다. 서로 다른 형식을 갖고 있는 데이터들을 컴퓨터가 이해할 수 있도록 하기 위해서는 구조를 통합해줘야한다. 이를 위해 판다스는 1차원 배열인 시리즈와 2차원 배열인 데이터 프레임이라는 구조화된 데이터 형식을 제공한다 판다스의 1차적인 목적은 서로 다른 데이터 형식을 공통의 포멧으로 만드는 것이다. 1. 시리즈 시리즈는 데이터가 순차적으로 나열된 1차원 배열의 형태를 갖는다. 인덱스와 데이터 값은 일대일 대응이된다. 파이썬의 딕셔너리와 비슷하다고 볼 수 있다. 1.1. 딕셔너리를 시리즈로 변환 pandas.Series(딕셔너리) #딕셔너리->파이썬 1.2 인덱스와 배열 ser..

[ C++ ] #4949 균형잡힌 세상

괄호문제는 스택을 쓰는 대표적인 문제이다! 문자열을 하나씩 읽어서 괄호만 스택에서 관리해야겠다. 나름 생각한대로 알고리즘을 짰는데,,, 시간초과가 났다. 먼저 간단하게 할 수 있는 것들부터 했다. 1. ios::sync_with_stdio(0); 2. cin.tie(0); 3. endl안쓰기 하지만 해결이 안됐고,, 결국 답지를 보면서 원인을 찾아봤다. 시간초과가 안나기 시작한건 char배열으로 getline을 받았는데 string으로 getline으로 받았다는 것과 이 변화에 따라서 for each문으로 바꾼것!이다. 그랬더니 틀렸습니다! 가 떴고 일단 시간초과가 안난것이 기뻤다 ㅎㅎ 그다음에 여러가지 반례를 찾아보고 열리는 괄호만 있을 때 안된다는 것을 발견했다! 그것만 고쳤더니 맞았습니다!를 만났다..

BOJ/[ BOJ ] C++ 2023.01.06

[ 알고리즘 ] BFS

1. 알고리즘 설명 다차원 배열에서 각 칸을 방문할 때 너비를 우선으로 방문하는 알고리즘 시작하는 칸을 큐에 넣고 방문했다는 표시를 남김 큐에서 맨 앞의 원소를 꺼내어 그 칸에 상하좌우로 인접한 칸에 대해 3번을 진행 해당칸을 이전에 방문했다면 아무것도 하지 않고, 처음으로 방문했다면 방문했다는 표시를 남기고 해당 칸을 큐에 삽입 큐가 빌 때까지 2번을 반복 시간복잡도는 모든 칸이 큐에 한번씩 들어가므로 칸이 N개일 때 O(N)이된다. 2. 코드 BFS는 코딩테스트에서 굉장히 중요한 부분이므로 꼭 잘 숙지해야함! #include using namespace std; #define X first #define Y second // pair에서 first, second를 줄여서 쓰기 위해서 사용 int bo..

공부/알고리즘 2023.01.05

[ C++ ] #1021 회전하는 큐

앞뒤로 넣기 간단한 deque를 이용하면 해결할 수 있을 것 같다. 1번도 연산자의 일부라고 생각해서 1번을 사용할 수 있으면 1번을 쓰고 1번을 못쓰는경우에만 2번3번을 써야한다고 생각해서 실버4치고 복잡하다고 생각하고있었다.. 아직 문제를 많이 안풀어봐서 문제해석능력이 부족한것같다. 찾을 숫자는 num이라는 배열에 정리하였고 순서판의 숫자들은 deque에 넣어관리하였다. 분명 간단하다고 생각했는데... 자꾸 실패해서 보니까 왼쪽이동 오른쪽이동의 규칙이 명확하지 않았다. 그래서 찾아야하는 숫자의 인덱스와 덱의 사이즈의 절반을 비교하여 오른쪽으로 이동할지 왼쪽으로 이동할지 결정하였다. 그랬더니 바로 원하는 결과가 나왔다! #include #include using namespace std; int num..

BOJ/[ BOJ ] C++ 2023.01.04
반응형