일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준
- 17609
- pyqt status bar
- SWEA
- hackerrank
- Queen's Attack
- pyqt tooltip
- tcp stack
- 프로그래밍 문제
- pyqt button
- git 명령어
- PyQt
- 커널 패킷 처리
- Queen's Attack II
- 회문
- 3D Surface Area
- 해커랭크
- pyqt menu bar
- Python
- git
- 네트워크 스택
- 도커
- pyqt layout
- 두 문자열
- git 입문
- 백준 알고리즘
- 하이퍼바이저
- 혁진이의 프로그램 검증
- Two Characters
- 리눅스 커널
- Today
- Total
목록전체 글 (10)
뜸부기와 공작새
https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net - 문제요약 입력받은 문자열이 회문인지 유사회문인지 아무것도 아닌지 확인하는 프로그램 작성하기 - 첫번째 생각 유사회문 구하는 방법을 우선 모든 문자열의 모든 알파벳을 하나씩 제외시켜보고 회문인지 테스트하는 방법이 있다 생각했는데, 문자열의 길이가 최대 길이인 10만이 되는 경우 10만자의 모든 문자를 하나씩 제외해가면서 회문인지 테스트하는 경우에 시간초과가 예상되어 다른 방법을 고민해봄 - 두번째 생각 우선 회문인지 확인해보..
#include #include #include using namespace std; typedef struct { int r; int c; char size; } map_t; int R, C; int path[21][21][16][4]; int dr[] = { 0, 1, 0, -1 }; int dc[] = { 1, 0, -1, 0 }; map_t map[21][21]; vector v; vector atv; int dfs(int posr, int posc, int mem, int dir, int depth) { if (posr >= R) posr = 0; else if (posr = C) posc = 0; else if (posc < 0) posc =..
https://www.acmicpc.net/problem/17391 17391번: 무한부스터 카트라이더를 처음 시작하는 카린이 정범이는 어려운 조작법에 실망감이 커져가고 있다. 드리프트, 순간 부스터, 커팅, 톡톡이 등등 어려운 테크닉에 질린 정범이는 그나마 쉬운 ‘숭고한 무한부스터 모드’에 도전해보려고 한다. ‘숭고한 무한부스터 모드’는 크기 N × M 의 직사각형 모양의 맵에서 진행되며, 맵 전체가 단위 격자로 구성되어 있다. 기존의 ‘무한부스터 모드’와는 다르게, 모든 격자 안에는 특정 개수의 부스터 아이템이 위치한다. 이 모드에서 플레이의 www.acmicpc.net 직사각형 map이 주어지고 map element들마다 위치한 정수 값만큼 최대로 이동이 가능할 떄 (방향은 only 오른쪽, 아래쪽..
알리바바에서 좋은 그림이 있어서 보고 그려봤음 하이퍼바이저란? 컴퓨터와 OS, 프로세스를 HW에서 분리하는 프로세스 특징 물리적인 하나의 시스템이 있는데 이를 여러 대의 가상 머신으로 나누어서 관리할 수 있어서 컴퓨터의 자원들 (메모리, CPU 등등)을 효율적으로 관리할 수 있음 장점 논리적으로 분리된 가상 머신을 만들 수 있어서 다른 하나의 가상 머신이 고장나도 다른 가상 머신들을 멀쩡하다 HW에 독립적이기 때문에 이동이 쉽다 단점 HW리소스를 많이 사용한다 (무겁다 ...) 각 가상머신마다 운영체제가 있기 때문에 가상 머신에 구축된 App들을 실행할 때 더 많은 자원이 필요하다 (예를들어 32기가의 램이 장착된 하나의 컴퓨터에 메모리를 4기가를 잡아먹는 가상 머신이 4개 있다고 하면 가상머신들이 총 ..
리눅스 패킷 Flow 분석 송신 [L7 Layer] send(), write() 함수와 같은 API를 이용하여 패킷의 정보들을 Kernel로 전달한다 해당 함수들을 호출하면 시스템 콜이 발생하여 sock_sendmsg() 함수를 호출한다 [L4 Layer] 시스템 콜 수행되어 sock_sendmsg() 함수에 전송할 패킷에 대한 정보가 전달된다 그다음 사용자 패킷에 mapping되는 버퍼를 읽을 수 있는지 확인하고 L7 Application에서 사용할 소켓 디스크립터를 이용해서 socket 구조체를 얻어오고 sock_sendmsg_nosec() 함수를 호출한다 sock_sendmsg_nosec() 함수는 얻어온 socket 구조체에 해당하는 프로토콜별 처리 함수를 호출한다 프로토콜의 명령과 설정을 담당하..
수신부 인터럽트와 패킷처리 최초에 NIC에서 패킷을 수신하면 커널의 메모리 영역에 존재하는 rx_ring에 수신한 패킷 정보를 밀어넣는다 이후에 CPU에게 인터럽트를 걸고 새로운 패킷이 왔다는 것을 정보를 밀어넣고 CPU에게 인터럽트를 요청한다 인터럽트 신호를 받은 CPU는 커널 인터럽트 핸들러를 수행한다 (do_IRQ() 호출) irq핸들러는 인터럽트 번호를 보고 드라이버 인터럽트 핸들러를 호출한다 드라이버 인터럽트 핸들러 함수는 (napi_schedule()) 소프트웨어 인터럽트(softirq)를 요청하는 일을 수행하는데 softirq핸들러 함수가 바로 net_rx_action() 이다 [L2 Layer] net_rx_action() 함수는 드라이버의 rx_ring에 존재하는 패킷 정보를 상위 레이어..
형상관리 도구로 git을 쓰고있는데 생각보다 진입장벽이 있다... 궁극적으로는 브랜치의 개념과 다양한 명령어를 다루어야 하지만 우선은 기초적인 명령어 위주로 정리를 해보아야겠다 1.VS Code에 git 등록 생성한 폴더와 파일을 git에 등록한다 명령어: git init 수행한 폴더는 이제 git으로 형상관리를 진행할 수 있다 2. git에 내 이름과 이메일 등록하기 git config --global user.name"이름" git config --global user.email"이메일 주소" 이와 같은 작업이 수행하면 숨김폴더에 아래와 같은 폴더가 숨겨져 있는 것 확인 3. 새로운 시점 만들기 위한 준비 git status 명령어를 통해 git에서 관리하는 파일과 git에서 관리하지 않는 파일을 확..
[문제 링크] https://www.hackerrank.com/challenges/3d-surface-area/problem [함수부 구현(C++)] int surfaceArea(vector A) { int front, back, right, left; int calc; front = back = right = left = 0; for (int i = 0; i < A.size(); i++) { for (int j = 0; j < A[i].size(); j++) { if (j == 0) front += A[i][j]; if (j == A[i].size() - 1) back += A[i][j]; if (i == 0) right += A[i][j]; if (i == A.size() - 1) left += A[..