[백준] 2239번 스도쿠 _ Python
·
Algorithms/Brute Fource
[초기 접근 방법] 스도쿠의 조건 : 행, 열, 네모칸 모두 1가지 숫자만 있는 것 기본적으로 완전탐색 - 백트래킹으로 넣었다 뺐다 하면 단축되지 않을까? - k 값은 스도쿠 값으로, range(1, 10)으로 설정해줘야 함 - 백트래킹의 종료 조건 → 스도쿠의 마지막 빈 칸이 채워졌을 때 종료한다. [생각] 1) 인덱스 3*3 구역의 스도쿠 구역 체크할 때 인덱스 설정이 틀려서 20분을 썼다.. 2) 그리고 한 가지 유의할 점이 스도쿠의 빈 칸의 값이 1~9 모두 유효하지 않을 때는, 이전 값이 틀린 것이므로 빠르게 return을 하여 해당 스도쿠의 빈 칸 dfs()를 끝내준다. 3) 아니면 스도쿠 빈 칸에 대한 1~9 check()를 반복문 안에서 하는 것이 아니라 dfs() 함수 첫번째에서 chec..
3주차. 애플리케이션 레이어
·
CS./네트워크
1. 쿠키와 세션에 대해서 설명해주세요. 더보기 쿠키는 HTTP 서버가 클라이언트를 식별할 수 있도록 하기 위해서 사용되는 것 입니다. 클라이언트가 웹 서버에 처음 접속하면, 서버는 쿠키를 생성에서 클라이언트에게 줍니다. 이후 클라이언트는 서버에 요청을 보낼때 자신의 정보가 들어있는 쿠키를 같이 보냅니다. 그러면 서버는 쿠키를 통해 클라이언트를 식별할 수 있습니다. 쿠키는 클라이언트 단에 저장되기 때문에 쿠키에 들어있는 사용자 정보가 유출될 수 있는 단점이 있습니다. "쿠키는 클라이언트에 저장되는 작은 데이터로, 서버와 클라이언트 간의 상태를 유지하는 데 사용됩니다. 서버가 클라이언트에게 응답할 때, Set-Cookie 헤더를 사용하여 쿠키를 생성하고 클라이언트에게 전송합니다. 이후 클라이언트가 서버에 ..
[백준] 1719번 택배 _ Python
·
Algorithms/Shortest path
[초기 접근 방법] 모든 노드 쌍에 대한 최단 거리 루트에서, 첫번째 방문 지역을 알아야 된다. 따라서 플로이드 알고리즘을 사용한다. 이 때, 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] [코드] # 풀이 시..
2주차. 애플리케이션 레이어 HTTP, HTTPS, DNS
·
CS./네트워크
[HTTP] 1. HTTP 프로토콜에 대해서 설명해주세요. 더보기 HTTP는 웹에서 정보를 주고 받게 해주는 프로토콜입니다. HTTP는 클라이언트와 서버로 구현됩니다. 클라이언트가 HTTP 메서드로 서버에게 요청을 보내면, 서버는 HTTP 상태코드로 응답하는 방식으로 동작합니다. "HTTP(Hypertext Transfer Protocol)는 웹 프로토콜 중 하나로, 클라이언트와 서버 간 통신을 가능하게 합니다." 기본적으로 Request-Response 형태로 동작을 하는데 클라이언트가 서버에게 특정 리소스에 대한 Request를 보내면, 서버는 해당 요청에 대한 Response를 클라이언트에게 전송합니다. 2. HTTP의 요청/응답 모델에 대해 설명해주세요. 더보기 클라이언트가 서버에게 요청하고 응답..
[백준] 18111번 마인크래프트 _ Python
·
Algorithms/Brute Fource
[초기 접근 방법] 1. 모든 땅을 고르게 한다. min ~ max 까지 땅의 높이를 고르게 했을 때, 소요 시간을 파악한다. 이전 소요 시간보다 크면 멈추고 출력 (최적화) 2. 시간을 계산한다. if n > k (목표 높이가 높을 때) n의 높이로 설정했을 때, n-k 쌓을 블록이 필요 → 1 elif n < k (목표 높이가 낮을 때) k-n 블록을 제거 → 2 3. B + push < need n 높이로 고르게 만드는 건 불가능 [생각] - 완전 탐색 문제 - 파이썬으로 제출할 때, elif로 조건 처리하게 되면 시간초과가 난다. else 로 256MN 처리를 줄여줘야 통과할 수 있다. [코드] # 풀이 시간 : 30분 # 시간복잡도 : O(256MN) # 공간복잡도 : O(MN) # 참고 : -..
5. API 개발 고급 - 실무 필수 최적화
·
Spring/JPA 2
OSIV : Open Session In View - 현재 JPA에서의 EntityManager와 같은 역할을 과거 Hibernate 에서 Session을 사용하였다. @Transactional → setAutoCommit() DB 커넥션을 획득하는 시점은 일반적으로 트랜잭션을 시작할 때 이다. 그럼 DB 커넥션의 반환 시점은 언제가 될까? 위 시점을 OSIV 설정을 통해 결정한다. if OSIV = True 트랜잭션이 끝나도 'DB 커넥션'과 영속성 컨텍스트가 유지되게끔 한다. 따라서 (API) Controller 나 View Template에서의 지연 로딩이 가능해진다. 사용자에게 반응되기 전까지 오랫동안 DB 커넥션 리소스를 사용한다. if OSIV = False 트랜잭션이 끝날 때, 'DB 커넥션..