2024/10 18

네트워크 소켓 및 함수 정리 (CS:APP)

✨ getaddrinfo( )int getaddrinfo(const char *hostname, const char *port, const struct addrinfo *hints, struct addrinfo **result); hostname과 port로 소켓 주소를 얻음IPv4 / IPv6 모두를 지원hostname은 얻고자 하는 호스트 이름  (NULL은 로컬 호스트 주소)hints는 결과 리스트 필터링을 위한 옵션 result 는 결과 리스트의 헤드성공 시 0을 반환 / 실패 시 오류 코드 반 ✨ socket( )int socket(int domain, int type, int protocol);네트워크 통신에서 사용되는 소켓 생성domain은 통신에 사용될 주소 체계 ( AF_INET(IP..

CS 2024.10.29

네트워크 핵심 키워드 정리 (네트워크 계층,소켓,CGI,HTTP,Proxy 등등)

📌 파일 디스크립터 (file descriptor)프로세스가 파일이나 입출력 장치에 접근할 떄 사용하는 일종의 "핸들"(여기서 핸들은 실제 자원과 프로세스 간의 연결을 추상화한 정수 값) 1. 파일 열기open() open() 함수로 시스템 호출을 사용한다. 호출이 성공하면 운영체제는 파일 테이블에 새 항목을 추가하고,참조할 수 있는 파일 디스크립터(정수)를 반환한다.  예를들어 파일을 열때 파일 디스크립터로 3이라는 숫자를 반환 받으면,프로세스는 3을 사용해서 그 파일에 접근 (보통 0,1,2는 기본적으로 표준 입력, 출력, 오류에 할당되어 3부터 시작됨) 2. 파일 읽기와 쓰기파일 디스크립터를 이용해아래와 같은 시스템 호출을 통해 데이터를 읽거나 쓸 수 있다.read(fd, buffer, size)..

CS 2024.10.28

팀 스파르타 채용 설명회

✨팀 스파르타   1. 팀 스파르타는 어떻게 일하나요 ?1. 치열하게 일하고  그안에 사람이 있다는 걸 잊지 않고 개인의 성장을 진심으로 배려하는 문화2. 와우함 - 위트 있는 곳3. 잘 쉴 수 있는 회사 스파르타  2. 누구나 개발자로서 성장하는 법1. 내가 운전대를 잡는다고 생각하자.(즉, 스스로 고민하면서 결정하고 배포를 온전히 할 수 있다.) 2. 사고 또는 실수에서 배운다. 3. 좋을 개발자가 되는것은  단순히 코드를 잘 짜는게 아니라,이 코드가 어떻게 비지니스에 임팩트를 입힐지 고민하는 사람-> 이것들을 고민하는게 미래의 좋은 개발자가 될 것이다.  좋은 방법을 알고 -> 좋은 방법을 실천하고 -> 돌아보고 -> 좋은 방법을 알고 ->  (반복) (스파르타 팀에 오면 3년 후에 시장에서 못 가..

크래프톤 정글 2024.10.26

[Python][백준] 13144. List of Unique Numbers / 투포인터 (G4)

🔗링크 :  https://www.acmicpc.net/problem/13144🗒️파이썬 코드 풀이import sysinput = sys.stdin.readlineN = int(input())lst = list(map(int,input().split()))number = set()rs = sp = 0 for ep in range(N): while lst[ep] in number: number.remove(lst[sp]) sp += 1 number.add(lst[ep]) rs = rs + ep - sp + 1print(rs)ex)1 2 3 1 2 1. 위와 같은 입력을 예시로 들어보자. 아마 대부분의 보통은 1 / 1,2 / 1,2,3 /  2 / 2,3 / ..

[Python][백준] 14891. 톱니바퀴 / 시뮬레이션,구현 (G5)

🔗링크 :  https://www.acmicpc.net/problem/14891🗒️파이썬 코드 풀이import sysfrom collections import dequeinput = sys.stdin.readline# 방향 로테이션def wheel_rotate(graph,i,dir): graph[i].rotate(dir) return # 방향 로테이션 스택에 넣어주기def stack_rotate(graph,n,dir): stack = [(n,dir)] rdir = -dir for i in range(n,0,-1): if graph[i][6] != graph[i-1][2]: stack.append([i-1,rdir]) ..

[Python][백준] 12865. 1로 만들기 2 / DP (S1)

🔗링크 :  https://www.acmicpc.net/problem/12865🗒️파이썬 코드 풀이N = int(input())INF = sys.maxsizedp = [INF]*(N*4)dp[0],dp[1] = 0,0for i in range(1,N+1): dp[i*3] = min(dp[i]+1, dp[i*3]) dp[i*2] = min(dp[i]+1, dp[i*2]) dp[i+1] = min(dp[i]+1, dp[i+1])dp = dp[:N+1]cur = Nlst = [N]for k in range(N,0,-1): if dp[k] == dp[cur]-1 and (k*3==cur or (k+1)==cur or (k*2)==cur) : lst.append(k) ..

C언어의 포인터 기본 개념

✨ C언어 포인터C언어의 포인터는 메모리 주소를 저장하는 변수이다.(변수나 배열의 값을 간접적으로 접근하고 조작하는 방식) 💡도대체 포인터는 왜 필요할까 ? 포인터를 사용하는 이유는 다음과 같다.  1. 포인터는 특정 변수나 데이터의 메모리 주소를 가리켜서 직접적으로 메모리 접근이 가능하다.2. 포인터를 사용하면 함수를 호출할 때 값을 복사하지 않고 주소를 전달하여, 메모리 낭비를 줄이고 직접 수정이 가능하다.3. 동적으로 메모리를 할당하여 프로그램의 메모리사용을 효율적으로 관리한다.  4. 복잡한 자료구조 (연결 리스트, 트리, 그래프 등 ) 동적 자료 구조 구현에 필수적이다. 💡그렇다면 왜 !! 이중 포인터가 필요할까 ? 1. 다차원 배열을 처리할때, 이중 포인터로 각 행을 동적으로 할당하거나 관..

C언어 2024.10.05

정글 7기 27, 28일차 / CS:APP 3장, 3주차 쪽지 시험, 배낭 문제 (알고리즘)

🐸  9월 30 일 / 27일차이날은 오전,오후는 하루종일 배낭 문제를 풀었고  저녁을 먹고나서CS:APP을 공부하였다.확실히 주말에 공부를 안하니 할게 정말 많이 밀린다... DP는 왠지 모르게 늘 새롭다 ㅠㅠ 계속 문제를 많이 풀어서 익숙해져야한다. (반드시!!)  [Python][백준] 12865. 평범한 배낭 / DP, 배낭 문제 (G5)🔗링크 :  https://www.acmicpc.net/problem/12865🗒️파이썬 코드 풀이N,K = map(int,input().split())lst = [(0,0)]dp = [[0] * (K+1) for _ in range(N+1)]for _ in range(N) : x,y = map(int,input().split()) lst.append((x,..

크래프톤 정글 2024.10.04