🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 접근법노드를 최대한으로 방문하면 하나의 네트워크가 형성된다. 해당 네트워크의 개수를 구하는 문제이다.DFS를 통해 한 번 탐색을 시작할 때 최대한으로 탐색한다. 또한 visited 리스트를 사용하여 노드 방문 여부를 체크한다. 😎 내 코드def solution(n, computers): answer = 0 visited = [False] * n def ..
분류 전체보기
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 접근법최단거리를 구하기 위해 BFS를 사용한다.이때 상하좌우로 이동하면서 맵을 탐색해야 한다. 따라서 변화량을 나타내는 dx와 dy 리스트를 생성한다. 초기 시작 위치를 (0, 0)으로 지정하고, 시작 위치에서부터 상하좌우로 탐색한다. 탐색하면서 조건문을 통해 맵을 벗어나지 않는지, 벽이 아닌지, 방문한 적이 없는지 확인한다.위 조건을 모두 만족할 경우 방문 처리를 수행하고, 맵..

🗂️ 문제링크: https://www.acmicpc.net/problem/1325 💡 접근법BFS/DFS를 사용하여 각 정점에서 이동할 수 있는 정점들의 최대 개수를 구하는 문제이다."A가 B를 신뢰하는 경우 B를 해킹하면, A도 해킹할 수 있다." 즉, 방향이 있는 그래프를 만들어 B → A 단방향 그래프를 정의해야 한다. 또한 시간복잡도 제한때문에 Python3가 아닌 PyPy3로 제출해야 성공할 수 있다. 😎 내 코드import sysfrom collections import dequeN, M = map(int, sys.stdin.readline().split())graph = [[] for _ in range(N+1)]for _ in range(M): a, b = map(int, sys..

CSRF란?Cross-Site Request Forgery의 약어로, 공격자에 의해 사용자가 의도하지 않은 요청을 수행하는 공격이다. 사용자 정보 수정, 패스워드 변경, 회원 탈퇴, 게시글 작성/수정/삭제 등의 행위가 가능하다. 공격 원리 분석예시 1) 서버 1개공격자가 악성 스크립트를 게시글에 작성해 둔다.인증된 사용자가 해당 게시글을 읽으면 악성 스크립트에 의해 패스워드 변경 요청이 자동으로 발생한다. 이때 스크립트는 Client-Side Script로 구성되어 있다. 따라서 클라이언트가 웹 서비스에 패스워드 변경 요청을 하게 된다. 예시 2) 서버 2개공격자는 사용자에게 A라는 사이트의 회원 탈퇴를 요청하는 악성 스크립트를 게시글에 작성해 둔다.인증된 사용자가 해당 게시글을 읽으면 악성 스크립트에 ..
1. application.yml 파일 구성spring: primary-datasource: jdbc-url: jdbc:mysql://localhost:3306/{DB1}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8 username: {username} password: {password} driver-class-name: com.mysql.cj.jdbc.Driver secondary-datasource: jdbc-url: jdbc:mysql://localhost:3306/{DB2}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8 username: {username} passwo..

🗂️ 문제링크: https://www.acmicpc.net/problem/1753 💡 접근법가중치가 자연수인 방향 그래프이므로 최단 경로를 구하기 위해 다익스트라를 사용해야 한다. 또한 거리가 가장 작은 노드를 자동으로 선택하기 위해 우선순위 큐(heapq)를 사용한다. distance의 요소는 모두 INF로 초기화되어 있다. 만약 if distance[now_node] 조건을 만족할 경우 now_node는 이미 방문된 노드이므로 방문 처리를 위한 visited 리스트가 따로 필요하지 않다.또한 해당 조건을 만족할 경우 이미 dist는 distance[now_node]보다 큰 값이기 때문에 dist 값으로는 now_node와 연결된 다른 노드의 최단 거리를 구할 수 없다. 따라서 continue를 ..

🗂️ 문제링크: https://www.acmicpc.net/problem/18352 💡 접근법인접 리스트를 통해 그래프를 구현하고, BFS를 사용하여 각각의 도시까지의 최단 거리를 distance 리스트에 저장한다. 현재 노드의 거리 값은 이전 노드의 거리 값 + 1이다.이후 K와 거리가 같은 도시를 출력하면 된다. 😎 내 코드import sysfrom collections import dequedef BFS(v): queue = deque() queue.append(v) visited[v] = True while queue: now_node = queue.popleft() for i in graph[now_node]: if not ..
🗂️ 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/43236 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 접근법바위 사이의 거리의 최솟값을 기준으로 이진 탐색의 범위를 조절해야 한다. low는 distance의 바위 사이 거리의 최솟값인 1로, high는 바위 사이 거리의 최댓값인 distance로 설정한다. mid를 바위 사이 거리의 최솟값으로 생각하고 탐색을 진행한다. 이때 바위 사이의 거리의 최솟값 중 최댓값을 구하는 것이 목표이다. 따라서 바위 사이의 거리를 구하고, 구한 ..