[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS 193

[알고리즘 연습] 섬 연결하기 (프로그래머스 lv3, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr 풀이 def solution(n, costs): ans = 0 costs.sort(key = lambda x: x[2]) routes = set([costs[0][0]]) while len(routes)!=n: for i, cost in enumerate(costs): if cost[0] in routes and cost[1] in routes: continue if cost[0] in routes or cost[1] in routes: print(cos..

[Network] HTTP 헤더 : 캐시와 조건부요청

캐시 브라우저 내부에서 캐시저장 cache-control 헤더를 조정하여 cache에 대한 설정을 해줄 수 있음 (Pragma, Expires 헤더도 존재하지만 cache-control의 하위호환임) 캐시가 존재하더라도 만료될 경우 서버로부터 데이터를 다시 받아야함 cache-control cf. 클라이언트에서 사용하는 캐시 저장소 이외에도 서버와 데이터 전송을 원활하도록 하기위한 '프록시캐시'도 존재한다. cache-control: no-cache : 데이터를 캐시하지만 항상 origin 서버(프록시캐시 서버x)까지 와서 검증을 받고 사용해야함 cache-control: no-store : 데이터에 민감한 정보가 있으므로 저장하지 않도록함 cache-control: must-revalid..

[알고리즘] 최단거리 알고리즘 - 다익스트라, 플로이드 워셜

최단 경로 알고리즘 가장 짧은 경로를 찾는 알고리즘 대표적으로 3가지 케이스가 존재한다. 한 지점에서 다른 한 지점까지 도달할 수 있는 최단경로 / 한 지점에서 다른 모든 지점까지 도달할 수 있는 최단경로 / 모든 지점에서 다른 모든 지점까지 도달할 수 있는 최단경로 그래프를 통해 지점과 연결거리를 표현한다는 특징이 있다. 다익스트라 최단거리 알고리즘 개념 특정노드에서 다른 모든 노드로 가는 최단 경로를 계산한다. 음의 거리가 없어야한다는 조건이 존재한다 다익스트라 알고리즘은 그리디 알고리즘의 일종이라고 할 수도 있다. (매 상황에서 가장 비용이 적은 노드를 선택하는 과정을 반복하기 때문) 동작과정 출발노드 설정 최단 거리 테이블 초기화 (주어진 정보 외엔 모두 무한(최대값)으로, 자기자신은 0으로 임의..

[Network] HTTP 일반헤더

HTTP 헤더 field-name ":" field-value field-name은 대소문자 구분이 없다. HTTP 전송에 필요한 부가정보를 담는 역할을 한다. 매우 다양한 표준 헤더가 존재하며, 필요시 임의의 헤더를 추가할 수 있다. RFC2616 (과거버전) General 헤더 : 메세지 전체에 적용되는 정보 (ex. Connection: close) Request 헤더 : 요청정보 (ex. User-Agent: Mozilla/5.0 ...)' Response 헤더 : 응답정보 (ex. Server: Apache) Entity 헤더 : 엔티티 바디에 대한 정보 (ex. Content-Type: text/html, Content-Length: 2433) 메시지 본문 안에 엔티티 본문이 포함되어 ..

[Network] HTTP 상태코드

상태코드란 클라이언트가 보낸 요청에 대한 처리 상태를 응답에서 알려주는 기능을 하는 코드이다. 100번대부터 500번대까지 존재하며, 각 코드마다 정해진 의미가 있다. 클라이언트는 해당 상태 코드들에 대해 반응하여 정해진 작업을 수행한다. 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하는 경우, 클라이언트는 상위 상태코드로 해석해서 작업을 처리한다. 100번대는 Informational로, 요청이 수신되어 처리중이라는 뜻인데, 거의 사용하지 않으므로 설명에서 생략한다. 200번대 (Successful) : 요청 정상 처리 200 (OK) : 요청에 대해 성공적으로 처리했음을 의미 201 (Created) : 요청에 성공해서 서버에서 새로운 리소스를 생성했음을 의미, 응답에 Location 헤더가 ..

[Network] HTTP API 설계 예시

일반적으로 HTTP API는 POST를 기반으로하는 시스템과 PUT으로 하는 시스템으로 나뉜다. 그 외에도 HTML FORM만을 사용하면서 Control URI라고 하는 것을 활용해 여러 작업을 수행할 수도 있다. HTTP API : POST 기반 POST 기반 API의 대표적인 시스템으로는 회원관리 시스템이 있다. 회원 등록을 POST로 진행한다.(물론 회원 수정이나 조회, 삭제 등에는 각각 PATCH, GET, DELETE 메서드가 사용될 수 있다.) EX : POST /members 사용자가 등록하는 리소스의 URI를 모른다는 특징이 있다. 이처럼 POST를 기반으로 하여 클라이언트가 새로 등록될 리소스의 URI를 모르는 시스템을 컬렉션이라고 부른다. HTTP API : PUT 기반 PUT 기반 A..

[Network] HTTP 메서드 활용

데이터 전달 방식은 크게 2가지 쿼리 파라미터를 통한 데이터 전송 : GET / 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 : POST, PUT, PATCH / 회원가입, 상품 주문, 리소스 등록, 리소스 변경 등 클라이언트에서 서버로 데이터를 전송하는 4가지 상황 정적 데이터 조회 이미지 혹은 정적 텍스트문서. 쿼리파라미터를 사용하지 않고 경로만으로 데이터를 조회한다. (GET) 동적 데이터 조회 주로 정렬 필터(검색어)에 활용. 쿼리 파라미터를 전송하면 서버에서 이를 기반으로 동적으로 생성한 결과를 조회한다. (GET + 쿼리 파라미터) HTML Form을 통한 데이터 전송 HTML Form을 submit하면 POST가 전송된다. form의 내용을 메시지 바디를 통해 전송 (key=va..

[알고리즘 연습] 타겟 넘버 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 풀이 from collections import deque def solution(numbers, target): que = deque([0]) for i in range(0, len(numbers)): for _ in range(2**i): now = que.popleft() que.append(now..

[알고리즘 연습] 수식최대화 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 풀이 def solution(expression): answer = 0 priorities = [ ('*', '-', '+'), ('*', '+', '-'), ('+', '*', '-'), ('+', '-', '*'), ('-', '*', '+'), ('-', '+', '*') ] for priority in priorities: one = list(ma..

[알고리즘 연습] 더 맵게 (프로그래머스 lv2, 파이썬)

문제 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 import heapq def solution(scoville, k): heapq.heapify(scoville) i = 0 while scoville[0] 1: heapq.heappush(scoville, heapq.heappop( scoville) + (heapq.heappop(scoville..