백준 10807번 문제https://www.acmicpc.net/problem/10807(size에 맞는 배열 생성 후 일치한 정수 개수 찾기 문제)Vector 접근법 장점동적으로 배열 생성 가능삽입 / 삭제가 간편하다#include #include int main(){ std::vector list_vector; int push_num = 0; int size = 0; std::cin >> size; for (int i = 0; i > push_num; list_vector.push_back(push_num); } int match_num = 0; int count = 0; std::cin >> match_num; for (int i : list_vector) { if (i == match_nu..
std::cin이란?C++ 에서 입력을 받을 수 있도록 하는 기능 ( #import istream )std::cin은 기본적으로 공백을 기준으로 입력을 받는다공백 : 개행 ( \n ) , 공백 (space bar) , 탭 (tap)#import int main(void){ int num; string str; std::cin >> num >> str; // 입력 : 2 string std::cout >> num >> endl >> str >> endl; //출력 // 2 \n string return 0; } 주의할점 1. 입력버퍼와 입력 상태값을 가진다 ( cin 은 하나의 객체 )2. 잘못 입력값이 들어갔을 경우 위의 2가지를 변경시켜주어야 한다..
소켓소켓의 경우 파일 핸들작업과 유사파일 핸들 : 파일의 읽고/쓰기를 조작하기 위한 컨트롤소켓 핸들 : 네트워크 연결을 조작하기 위한 컨트롤소켓의 경우 비동기 처리가 주로 사용됨비동기처리의 필요성동기처리일경우, 해당 소켓의 통신과정 동안 사용자 입장에서는 Main 함수가 정지되어있음 (다른 일을 처리하지 못해 멈춰있는것처럼 보임)비동기 방식논블로킹 소켓Overlapped I/Oepoll (linux)I/O Completion Port (IOCP / Window) Blocking 통신 구조클라이언트sock_handle = socket(TCP)sock_handle.bind(any_port)sock_handle.connect(server_ip:port)sock_handle.send()sock_handle.c..
네트워크 간단 요약 정리 바이너리 전송- 이진화 되어있어서 컴퓨터가 이해하기 쉽게 표현 (사람이 보기 힘듬) 장점 : 해커가 확인하기 어려움단점 : 디버깅 힘듬 메타 데이터란 ?바이너리의 경우 사람이 알아보기 힘든 부분도 있고, 서로 다른 버전 (통신규격 변경으로 인해) 의 경우 서로 통신이 어려운 단점이 존재메타데이터일종의 어떤 데이터인지 설명 장점디버깅이 쉬움클라이언트 버전이 다르더라도 (메시지 형태가 다름) 메타데이터를 통해 인지할 수 있다.단점데이터 크기가 커진다사람이 알아보기 쉽다스트림 vs 메시지스트림 : 송신자와 수신자가 받는 크기가 일정하지 않을 수 있다메시지 : 송신자와 수신자가 받는 크기가 일정하다TCP vs UDPTCP : 신뢰성 있는 통신, 스트림 형식 ( 데이터를 받았다는 응..
STRING 문자열 라이브러리#include 코딩테스트를 준비하며, 문자열 기반 문제들이 있는 것 같아 준비를 해보았다. 기본적인 string 라이브러리를 통해 손쉽게 문자열을 파싱하고, 조작하기가 편리하게 되어있었다.하지만, 문득 string 라이브러리를 사용하지 않고 하려다보니 막막해서 찾아보게 되었다... 동적할당. 물론, 처음 초기화한 값을 그대로 상수처럼 사용한다면 상관은 없겠지만, 문자열끼리 더하거나 없애거나 복사하거나 등의 기능을 하기위해서는 동적할당 개념이 들어가야한다고 생각했다. 동적할당이란? - 한정된 메모리를 효율적으로 사용하기 위해서 컴파일 시점이 아닌 프로그램 런타임 시점에 메모리를 할당하고 다 사용하면 해제해줌으로써 메모리를 효율적으로 사용하는 것을 말한다. 문자열과 동적할당간..
통신네트워크 품질 기준레이턴시 (전송 지연 시간)전송 중간 라우터/스위치가 많을 경우 안좋음회선 길이가 길수록 안좋음ex) tracert 이용패킷 유실률라우터/스위치가 받을 수 있는 자원보다 더 많은 요청이 올 경우 ( 드랍 )전송 속도 (스로풋) 두개의 연결 사이의 네트워크/라우터 최소 통신 속도로 정해짐 (다른 스위치/라우터 장비가 좋더라도 중간에 한 장비라도 스로풋이 안좋으면 한계가 그 단말기에 의존성이 걸린다 ex) ping -> TTL메시지 형식 VS 스트림 형식메시지 : 데이터값이 sendTo() 한 것 그대로 recvFrom()해서 받는다ex) sendTo(aaa) + sendTo(bbb) + sendTo(ccc) -> recvFrom(aaa) + recvFrom(bbb) + recvFrom..
1. 교착상태 디버그 ( CRITICAL_SECTION )윈도에서 제공 임계영역 체크DEBUG -> Windows -> ThreadsThreads의 정보를 통해 Thread ID 값과 Location을 통해 호출 스택 확인 가능2. 병렬성 확인 ( CPU가 병렬적으로 처리되고 있는지 확인 )Tools -> Concurrency Visualizer 설치3. 싱글스레드 게임 서버CPU 개수 별로 프로세스를 만들어서 구동이것도 한가지 방법이지만 메모리 공유가 안되고, 컨텍스트 스위칭에서 많은 자원이 소모됨해결책) 코루틴 / 비동기 함수를 사용하여 자원을 최대한 사용함4. 멀티스레드 게임서버동시접속자를 위해 메모리를 공유할 수 있는 스레드를 활용스레드의 평균적인 개수스레드 == 코어 수단, device tim..
개발 교육 프로그램에 관하여..[ 교육 프로그램 종류 ]1. SAFFY ( samsung ) -> 24년 지원마감2. Jungle ( 크래프톤 / SW사관학교 ) -> 24년 6월3. Naver Bootcamp (NAVER) -> 24년 6월 ~ 7월4. 우아한 테크코스 (우아한 형제들) -> 24년 지원 마감5. 데브코스 ( 프로그래머스 ) -> 24년 7월 (백엔드 과정)6. sw 마에스트로 ( 마에스트로 ) -> 24년 지원 마감 개발 교육 프로그램 등의 커리큘럼의 내용들을 보면, 개인적으로 웹과 관련된 학습 진행이 많다는 생각이...그래서 약간의 아쉬움이 남는데, 그 중에서도 괜찮은 것이 있어 이렇게 글로 남기고자 작성해봅니당!(개인적인 생각일 뿐입니당..) 먼저, SAFFY를 고를 수 있..
- Total
- Today
- Yesterday
- JSON
- Java
- stack
- 오블완
- 버블정렬
- 티스토리챌린지
- 이진탐색
- 포트폴리오
- DFS
- bean
- 코딩테스트
- HTML5
- 타입변환
- db
- Thymeleaf
- 검증
- JDBC
- SQL
- 예외처리
- 우선순위 큐
- 게시판
- 게시판 프로젝트
- Spring
- 알고리즘
- 클래스
- 정렬
- BFS
- 기술면접
- 깊이우선탐색
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |