개발자 강화 (63) 썸네일형 리스트형 디자인패턴 MVC MVP MVVM FLUX 면접 준비용이라서 그냥 줄줄줄 자료 보고 쓰는... 디자인 패턴이란SW 설계에서 자주 발생하는 문제를 해결하기 위해 검증된 재사용 가능한 설계 템플릿문제를 효율적으로 해결할 수 있도록 설계 원칙과 구체적인 구현 방법을 제시코드의 재사용성과 유지보수성을 높이는 데 도움을 줌싱글톤 패턴하나의 클래스에 오직 하나의 인스턴스만 생성하도록 보장MVC모델 뷰 컨트롤러모델 - 데이터 관리 - 옵저버블뷰 - 화면 그려주기 - 옵저버컨트롤러 - 뷰와 모델의 중개자 - 이벤트 리스너모델에서 변경사항이 생기면 뷰에 알려주고, 이를 기반으로 컨트롤러 작동장단점장점동시 다발적 개발 가능높은 응집도개발 용이성단점컨트롤러가 다수의 뷰를 선택할 수 있음. 하는 일 너무 많아짐.코드 일관성 유지에 노력 필요뷰와 모델 사이 의존성 높음.. 프로세스, 스레드 / 동시성 제어 그리고 운영체제 레츠고 저번학기에 배운 건데도 기억이 안나다니공부는 진짜 유산소와 같다계속 해야함면접용 CS 정리라서 운영체제 시험 준비를 하시는 분들은 안맞을 수도 있어용 프로세스와 스레드간단히 생각하면 프로세스>스레드. 프로세스 안에 스레드 있음프로세스실행 중인 프로그램의 인스턴스독립적인 메모리 공간을 가짐운영체제가 자원을 할당하는 기본 단위스레드프로세스 내에서 실행되는 작은 실행 단위같은 프로세스 내에서 다른 스레드들과 메모리 공유(코드, 데이터, 힙)공유 메모리 때문에 데이터 접근 시 동기화가 필요함스레드마다 독립적인 스택과 레지스터 가짐통신프로세스 간 통신 - IPC inter process communicaiton독립적인 메모리 공간을 사용하므로 통신 이 복잡함파일, 소켓, 파이프, 메시지 큐, 공유 메모리 등을 사.. HTTP HTTP는 어플리케이션 계층의 대표 스택, 웹서비스 통신에 사용 됨TCP/IP 4계층 구조: 어플리케이션 - 전송 - 인터넷 - 링크 HTTP/1.0한 연결당 하나의 요청을 처리하도록 설계 됨RTT(패킷이 목적지에 도달하고 다시 출발지로 돌아오는 데 걸리는 시간)가 증가함왜? 서버에서 파일 가져올 때마다 TCP 3 way handshake 해야 됨매번 연결할 때마다 RTT가 증가하니까 서버에 부담이 가서, 이를 해결하기 위한 방법이 제시 됨이미지 스플리팅많은 이미지가 합쳐 있는 하나의 이미지를 다운받고, 이를 기반으로 background-image의 position을 이용해 이미지를 표기코드 압축: 개행 문자, 빈칸 없애서 코드 크기 최소화이미지 Base 64 인코딩: 이미지 파일을 64진법 문자열로 인.. TCP와 UDP부터 출발하는 컴퓨터 네트워크의 생활 근본 문제다컴퓨터 네트워크를 배운지는 1년이 훌쩍 넘었지만 기억해내야 한다 TCP연결지향적: 데이터 전송 전 송신자와 수신자 간의 연결 설정신뢰성 보장: 데이터가 손실되거나 순서가 어긋나면 재전송패킷의 순서를 보장하며, 모든 데이터가 정확히 도착하도록 확인네트워크 상태를 고려해 데이터 전송 속도 조정데이터 신뢰성 보장 때문에 헤더가 크고, 추가적인 처리 과정이 있음예시: 웹 브라우징(HTTP, HTTPS), 이메일(SMTP), 파일전송(FTP)UDP연결 없이 데이터 전송데이터가 손실되거나 순서가 바뀌어도 이를 감지하거나 수정하지 않음헤더 크기가 작고, 추가적인 확인 과정 없이 전송 속도가 빠름예시: 실시간 스트리밍, 온라인 게임 TCP는 데이터를 순서대로 보장할 수 있는 이유가 뭘까?시퀀스 번호TCP는 .. [백준] 22233 가희와 키워드 / 구현 / Python 실3 "시간초과의 늪"https://www.acmicpc.net/problem/22233예전 포스팅에서도 쓴 적이 있는데파이썬에서 시간초과가 뜨면 input 대신 sys.stdin.readline을 쓰라는 교훈을 얻었던 적이 있다. 문제는 정말 간단하다 메모장에 적은 키워드를 set으로 입력받고,블로그에 글을 m개 적을 때마다콤마를 구분으로 입력을 분리해서 임시 set을 만든 후메모장 set에서 현재 글에 입력한 단어 임시 set을 빼준다그리고 현재 메모장의 길이를 출력한다 python의 set을 잘 쓰면 된다그런데 입력 받는 부분이 잘 구현되어야 하는 것 같다그것 때문에 시간초과가 너무 많이 발생해서, 결국 다른 블로그를 봤는데코드 구조는 똑같은데 입력 부분만 달랐다 import sysinput = sys... [백준] 17266 어두운 굴다리 / 이진탐색 / Python 실4 오랜만입니다. 아직 학부생이라 기말고사 공부하다 늦었음 https://www.acmicpc.net/problem/17266 가로등 높이만큼 왼쪽 오른쪽으로 빛이 퍼지는 데, 0~n 구간을 빠짐없이 빛으로 덮을 수 있는 최소 가로등 높이를 구해야 함 while문으로 이진탐색을 해야 풀리는 문제더라구요 left, right를 두고 역전되는 시점에 while문을 종료합니다 높이 h를 left right의 중간값으로 잡고,현재 높이에서 커버 가능한 구간의 끝점을 잡아서 비교합니다 가로등 위치 for문을 돌면서현재 커버 가능한 구간의 끝점을 가로등 위치+가로등 높이 h로 업데이트합니다만약 커버 가능한 구간의 끝점이 가로등 위치 - 가로등 높이 h보다 작은 경우,이전 가로등 커버 범위와 현재 가로등 커버 범위 사이.. [백준] 1522 문자열 교환 / 구현 / python 실1 슬라이딩 윈도우 풍년이네https://www.acmicpc.net/problem/1522a랑 b 섞인 문자열이있고 문자 위치를 교환해서 a가 쭉 연속된 문자열로 만들기 위해필요한 최소 교환 횟수를 구해야 한다 문자열이 원형이라 처음과 끝이 이어져있다는게 관건 원형 처리를 원활하게 하기 위해 문자열을 두번 이어붙인다 처음 size만큼의 문자에서 b의 개수를 세어 초기 윈도우 값으로 사용한다 1부터 문자열 길이번째 원소까지 탐색한다슬라이딩하면서 윈도우의 왼쪽 문자를 제거하고, 오른쪽 문자를 추가하면서한 칸씩 이동한다이때 왼쪽 문자가 b였으면 b개수-1, 오른쪽 문자가 b였으면 b개수+1한다 이전 최소 값과 현재 값을 min으로 비교해서 업데이트한다 계속 윈도우를 이동시키면서 b의 개수가 최소로 포함되는 구간.. [백준] 1283 단축키지정 / 구현 / Python 실1 https://www.acmicpc.net/problem/1283 뭔가 오랜만에 보는 코테같은 문제...진짜 구현 같은 문제? 각 줄마다 입력되는 단어를 공백으로 구분해서 배열로 추가한다그럼 이차원 배열 형태가 된다 이차원 배열을 탐색하면서i번째 원소를 k라고 둔다k 안에도 여러 개의 단어가 들어있으니 다시 for문을 돌린다 k 안에 있는 j번째 단어는 key라고 지정한다 일단 각 단어의 첫 글자가 단축키로 지정이 되어야 하기 때문에가장 먼저 key의 0번째 요소를 본다(* 모든 요소를 비교할 때는 lower case로 바꿔서 비교해야 대소문자 구분없음 조건을 잘 충족할 수 있다 0번째 요소가 아직 단축키에 없으면(save 배열에 없으면)save 배열에 key[0]요소를 추가한다그리고 해당 단어를 출력 .. [백준] 24037 문자열게임2 / 구현 / python 골5 보자마자 슬라이딩 윈도우라는 생각 https://www.acmicpc.net/submit/20437 처음에는 '20922_겹치는 건 싫어'의 풀이를 응용해보려고 했다이 풀이는 어떤 문자를 k개 이하로 포함하는 가장 긴 부분 수열을 구하는 문제 그래서 이걸 응용해서 어떤 문자를 정확히 k개 포함하는 가장 짧은 부분 수열을 구하는 것까지는 괜찮았다근데 어떤 문자를 k개 포함하면서, 처음과 끝이 그 문자로 이뤄진 수열을 구하는 부분에서 좀 오차가 있었다 from collections import defaultdictt = int(input())for i in range(t): a = list(map(str, input().strip())) k = int(input()) n = len(a) .. [백준] 11501 주식 / 그리디 / python 실2 https://www.acmicpc.net/problem/11501 역순으로 풀면 풀리는 문제 처음에는 정순으로 푸려고 했다 오늘 가격보다 내일 가격 작으면현재 구매했던 티켓을 다 팔아버리기 오늘 가격보다 내일 가격이 크거나 같으면한장 사기 근데 생각해보니내일 작다고 당장 팔아버리는 것보다그 다음에 더 큰 값이 나왔을 때 존버하고 파는 게 나은건가?그런 생각이 들긴 했다 처음에 구현했던t = int(input())for i in range(t): n = int(input()) a = list(map(int,input().split())) #3 #10 7 6 #감소수열은 아무것도 안사고, 안파는게 맞음 #3 #3 5 9 #증가 수열은 하루에 하나씩 사고, 마지막날.. 이전 1 2 3 4 ··· 7 다음