본문 바로가기

전체 글156

4주차. UDP, TCP, 신뢰적 데이터 전송 [UDP] 1. UDP에 대해 설명해주세요. 더보기 TCP와 달리 UDP는 연결 지향형이 아니고, 신뢰적인 데이터 전송을 보장하지 않습니다. 단지 체크섬을 통해 수신된 패킷의 오류 여부 정도만을 알 수 있습니다. UDP는 TCP에 비해 기능이 별로 없기 때문에 적은 오버헤드로 빠른 전송이 가능 합니다. 따라서 일정 전송 요구량이 있고, 조금의 데이터 손실을 허용하는 스트링 애플리케이션에 어울립니다. "UDP는 User Datagram Protocol의 약자로, TCP와 함께 네트워크 통신에 사용되는 프로토콜 중 하나입니다. TCP와 달리 연결 설정이 없어 빠른 데이터 전송이 가능하지만, 데이터 손실이나 중복 전송에 대한 보장이 없습니다. 주로 음성 및 영상 스트리밍, 온라인 게임, DNS와 같은 실시간 .. 2024. 1. 29.
[백준] 1079번 마피아 _ Python [초기 접근 방법] 일단 '마피아'가 '나'라고 생각하자. 만약 dp로 푼다면 dp[i] : i번째 밤에 유진이의 유죄지수 값을 저장 꼭 유죄지수가 가장 낮게 유지할 필요는 없지 않을까? 그 다음 날 낮에 본인이 안 죽을 정도에서 밤에 죽이면 된다. 그럼 백트래킹? 본인이 유죄지수가 가장 높으면 리셋하고, 안 높으면 계속 진행 그렇게 완전 탐색을 해서 제일 긴 밤 출력하자 [생각] 우선 "낮"과 "밤" 코드를 분리하지 않고, 한 로직 내에서 같이 구현하려고 했던 것이 초기 구현의 복잡도를 높였던 것 같다. 그리고 낮에 마피아(나)가 죽지 않게끔 조건 처리를 해주었는데, 이 또한 일단 dfs() 재귀를 거치고 dfs() 내 조건 처리에서 제할 수 있었던 부분이었다. 음.. 백트래킹을 할 때 조건에 따라 분.. 2024. 1. 29.
[백준] 1092번 배 _ Python [초기 접근 방법] 1) 구현 박스와 크레인을 내림차순 정렬을 한다. 무거운 박스부터 무거운 크레인을 배정한다. 배정을 못할 시, 크레인 순환을 +1 한다. → 무거운 박스는 옮기지 못하지만 작은 박스는 옮길 수 있음 2) 이분 탐색 현재 박스 무게에 맞는 크레인을 이분 탐색으로 배정한다. 이 때 박스 무게 초과인 upper_bound가 아닌 이상인 lower_bound로 탐색을 해야 한다. 모든 박스를 효율적으로 이동하기 위해, 무거운 박스부터 크레인으로 옮긴다. → ? [생각] 이분 탐색으로 풀리지 않자 검색하여 코드를 참고했다. 그리디로 푸는 것..😂 그리디 문제인지 알고 접근하면, 바로 그리디적으로 생각하게 되는데 유형을 모르고 푸니 완전탐색, 백트래킹, 이분탐색, dp 여러 측면에서 생각하게 되.. 2024. 1. 28.
[백준] 2239번 스도쿠 _ Python [초기 접근 방법] 스도쿠의 조건 : 행, 열, 네모칸 모두 1가지 숫자만 있는 것 기본적으로 완전탐색 - 백트래킹으로 넣었다 뺐다 하면 단축되지 않을까? - k 값은 스도쿠 값으로, range(1, 10)으로 설정해줘야 함 - 백트래킹의 종료 조건 → 스도쿠의 마지막 빈 칸이 채워졌을 때 종료한다. [생각] 1) 인덱스 3*3 구역의 스도쿠 구역 체크할 때 인덱스 설정이 틀려서 20분을 썼다.. 2) 그리고 한 가지 유의할 점이 스도쿠의 빈 칸의 값이 1~9 모두 유효하지 않을 때는, 이전 값이 틀린 것이므로 빠르게 return을 하여 해당 스도쿠의 빈 칸 dfs()를 끝내준다. 3) 아니면 스도쿠 빈 칸에 대한 1~9 check()를 반복문 안에서 하는 것이 아니라 dfs() 함수 첫번째에서 chec.. 2024. 1. 27.
3주차. 애플리케이션 레이어 1. 쿠키와 세션에 대해서 설명해주세요. 더보기 쿠키는 HTTP 서버가 클라이언트를 식별할 수 있도록 하기 위해서 사용되는 것 입니다. 클라이언트가 웹 서버에 처음 접속하면, 서버는 쿠키를 생성에서 클라이언트에게 줍니다. 이후 클라이언트는 서버에 요청을 보낼때 자신의 정보가 들어있는 쿠키를 같이 보냅니다. 그러면 서버는 쿠키를 통해 클라이언트를 식별할 수 있습니다. 쿠키는 클라이언트 단에 저장되기 때문에 쿠키에 들어있는 사용자 정보가 유출될 수 있는 단점이 있습니다. "쿠키는 클라이언트에 저장되는 작은 데이터로, 서버와 클라이언트 간의 상태를 유지하는 데 사용됩니다. 서버가 클라이언트에게 응답할 때, Set-Cookie 헤더를 사용하여 쿠키를 생성하고 클라이언트에게 전송합니다. 이후 클라이언트가 서버에 .. 2024. 1. 21.
[백준] 1719번 택배 _ Python [초기 접근 방법] 모든 노드 쌍에 대한 최단 거리 루트에서, 첫번째 방문 지역을 알아야 된다. 따라서 플로이드 알고리즘을 사용한다. 이 때, graph[i][j] 값이 갱신될 때의 k를 result[i][j] = k 로 저장한다. → result[i][j] : i에서 j까지 이동하는데, 가장 먼저 들려야 하는 지점 [생각] 위 접근 방법에서 잘못된 점을 디버깅 하면서 발견했다. k 값이라도 순수하게 가장 먼저 들려야 하는 지점이 아니라, i에서 k까지 가는데 가장 먼저 들려야 하는 지점이 있을지도 모른다는 사실을 간과했다. 이러한 사고를 코드로 반영하게 되면, 다음과 같다. # 초기 코드 result[i][j] = k # 수정 코드 result[i][j] = result[i][k] [코드] # 풀이 시.. 2024. 1. 21.