반응형

전체 글 221

[ 컴퓨터구조 ] 명령어

1. 소스 코드와 명령어 우리가 작성하는 소스코드는 컴퓨터 내부에서 명령어로 변환되어 컴퓨터를 작동시킨다. 1.1 고급언어와 저급언어 C, C++, JAVA와 같은 프로그래밍 언어들은 모두 사람들이 이해하기 쉽게 만든 고급언어이다. 반대로 컴퓨터가 직접 이해하고 실행할 수 있는 언어를 저급언어라고 한다. 저급언어는 명령어로 이루어져 있다. 저급언어는 0과1로 이루어진 기계어와 0과1을 전역한 어셈블리어가 있다. 짜피 컴퓨터가 고급언어에서 저급언어로 바꿔주는데 왜 저급언어를 알아냐하냐!!라고 할 수 있지만 하드웨어랑 밀접한 임베디드 개발자, 게임개발자, 정보보안 전문가 등의 개발자들은 어셈블리어를 많이 사용한다. 어셈블리어를 잘 관잘하면 프로그램이 어떤 절차로 작동하는지 이해할 수 있기 때문에 개발자라면 ..

[ C++ ] #2178 미로탐색

미로찾기는 BFS에서 많이 나오는 문제이다. 미로찾기 까지는 성공했지만,,, 이 문제의 핵심인 최단경로구하는거에서 막혔다.. 가다가 이길이 아닐때 어떻게 거리를 구하지...??? 맞는일인지 아닌지 어떻게 알고 거리를 update하지?? 이 것에 대한 해결방안으로 방문했는지 체크하는 배열에 이 자리까지 오는데 걸린 거리를 저장하는걸로 하였다. 다이나믹 프로그래밍..을 이용했다고 볼 수 있을 것 같다. #include #include #include #include using namespace std; int check[100][100]; int n, m; int dx[4] = { 0,1,0,-1 }; int dy[4] = { 1,0,-1,0 }; string a[100]; int main() { ios::..

BOJ/[ BOJ ] C++ 2023.01.15

[ C++ ] #1926 그림

어떤식으로 해야할지 알 것 같으면서도...코드로 짜려고하니까 잘 생각이 안난다. BFS로 1이 있는한 계속 탐색을 하고 0 으로 둘러쌓이면 탐색을 멈추면된다. 그렇게 그림을 하나 찾아내면 그 다음은 어디에서부터 탐색해야할까? 내가 놓치고 있던게 있었다. 다 0으로 둘러쌓여있으면 Queue는 비기 때문에 BFS는 끝난다. 그럼 그 이후 탐색을 하면서 방문하지 않았고 1인 지점을 찾은 뒤 거기서 부터 다시 BFS를 진행하면된다..! BFS 문제를 처음 풀어봐서 조금의 도움을 받았다는게 너무 아쉽고 찝찝하다... 다음에는 무슨일이 있어도 꼭 내 힘으로만 풀어야지!!!!!!!! #include #include #include using namespace std; int check[500][500]; int ma..

BOJ/[ BOJ ] C++ 2023.01.14

[ spring ] 예제 - 회원 관리 : 도메인, 리포지토리, 서비스, 테스트케이스

1. 비지니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소(DB)가 선정되지 않음(가상의 시나리오) 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 서비스의 핵심 비지니스 로직이 들어있음 (ex.로그인 횟수제한) 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비지니스 도메인 객체 (ex. 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨) 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 (데이터 저장소는 RDB, NoSQL 등 고민중인 상황으로 가정) 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 2. 회원 도메인과 리포지토리 만들기 //멤버클래스 packag..

[ C++ ] 3986 좋은 단어

국어를 잘못하는지 집중력이 낮은지.. 문제 이해하는데에 좀 걸렸다. 결론적으로는 괄호문제와 비슷하다고 생각했다. A괄호와 B괄호가 있다고 생각하고 풀면 어렵지 않을 것 같다. 한 줄 읽고 한글자씩 보면서 읽은 글자가 스택의 맨 위와 같으면 pop해주고 그렇지 않다면 스택에 push 해준다. 스택이 비어있다면 무조건 push해준다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int N,cnt=0; cin >> N; for(int i=0;i

BOJ/[ BOJ ] C++ 2023.01.12

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

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..

반응형