728x90
" 백준 3184번 양 문제 파이썬 " 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net " 💡 문제 해결 아이디어 " 이번 문제는 R x C 크기의 범위 내에 있는 울타리 범위 내에서 살아남은 양의 수와 늑대의 수를 구하는 문제이다. bfs를 통해 한 울타리 범위 내에 있는 양과 늑대의 수를 체크하고 문제에 주어진 조건대로 양의 수 > 늑대의 수 : 양이 살아남음 늑대의 수 >= 양의 수 : 늑대가 살아남음 이렇게 체크하여 총 살아남은 양과 늑대의 수를 출력하도록 구현하였다. 코드는 다음과 같다...
" 백준 2606번 바이러스 문제 파이썬 " " 💡 문제 해결 아이디어 " 바이러스 문제는 그래프에서 1에 연결되어 있는 노드를 탐색하여 그 갯수를 출력하는 문제이다. 방문한 노드는 visited 배열에 True로 저장하여 중복 탐색하지 않도록 구현한다. 주어지는 입력값을 이용하여 연결 관계 그래프를 생성하고 1번 노드를 시작으로 연결되어 있는 노드의 갯수를 카운트하면 정답을 도출할 수 있다. 예제 입력 값을 통하여 연결 관계 그래프를 생성하면 다음과 같은 그래프가 생성된다. 주의 사항! 입력받은 값들로 그래프를 그릴 때에 방향이 있는 그래프가 아니므로 node1에 node2을 연결해주었다면, node2에도 node1을 추가해주어야 한다. 만약 node1에 node2을 연결하는 작업만 진행한다면 아래와 ..
" 백준 2573번 빙산 문제 파이썬 " " 💡 문제 해결 아이디어 " 이번 문제 해결 아이디어는 코드에 주석으로 달아놓았습니다. 주의 사항 (시간 초과 문제) 이러한 출력 조건이 존재하기 때문에 빙산의 갯수가 0이 된다면 0을 출력하는 코드를 추가해주어야 한다. 그렇지 않으면 시간 초과 오류가 발생하여 문제 풀이에 실패하게 된다. 해당 코드 # 모든 빙산의 갯수가 0이면 0을 출력하도록 year을 0으로 변경하고 반복문을 종료한다. (문제에 존재하는 출력 조건) if tempCnt == 0: year = 0 break # 빙산의 갯수가 0보다 크면 cnt에 빙산의 갯수를 저장 else: cnt = tempCnt 코드 from collections import deque import copy import..
도커 MySQL 컨테이너 접속법 도커를 통해 MySQL 컨테이너를 생성하는 경우 MySQL에 직접 접속하여 설정해야하는 상황이 있다. 또는 DB 내부에 제대로 값이 입력되는지 확인하는 등 다양한 상황에서 DB에 접속해야하는 경우가 발생한다. 이때 도커 컨테이너로 열려있는 DB이기 때문에 어떻게 접속하는지 모르는 사람들이 많은데 그 방법에 대해 말해보고자 한다. 본인은 다음과 같은 docker-compose.yml 과 Dockerfile을 통해 생성한 환경에서 테스트한다. docker-compose.yml version: '3' services: app: container_name: app build: ../ restart: always ports: - '8080:8080' depends_on: - dat..
백준 2156번 포도주 시식 문제 파이썬 " 💡 문제 해결 아이디어 " 연속으로 포도주 잔을 선택하는 문제인데 연속으로 2잔만 마실 수 있고 여러 경우 중 최선의 값을 구한다는 점에서 Dynamic Programming 알고리즘 문제라는 점을 알아낼 수 있었다. 문제 해결 방식 : 보텀업 방식 n : 포도주 잔의 개수 arr : 테이블 별 포도주의 양을 담는 변수 dp[i] : i번째 줄까지에서 마실 수 있는 최대 포도주 양 dp 배열 초기화 dp[0] = arr[0] : 2개 연속으로 마실 수 있는데 1개만 있기 때문에 arr[0] 으로 초기화 dp[1] = arr[0] : 2개 연속으로 마실 수 있는데 2개만 있기 때문에 arr[0] + arr[1] 로 초기화 dp[2] = max(arr[0] + a..
" 백준 1926번 그림 문제 파이썬 " " 💡 문제 해결 아이디어 " 1926번 그림 문제는 0과 1로 이루어진 그래프에서 상하좌우가 1로 연결된 그림을 찾아 그 갯수와 그 그림들 중 가장 넓은 넓이를 출력하는 문제이다. for문을 통해 그래프의 0,0 ~ n-1,m-1 까지 전체를 탐색하며 값이 1인 지점을 찾을 때마다 cnt +=1 을 한다. 그리고 값이 1인 지점의 x,y좌표를 bfs로 탐색하여 그 지점에 연결되어 있는 1들을 모두 0으로 변경하며 1이 0으로 변경되는 횟수를 area(넓이) 변수에 +1 해주고 더이상 연결된 1이 없다면 area 변수의 값을 return한다. return받은 area변수는 이전에 서칭한 가장 넓었던 그림의 면적(maxArea 변수)와 비교하여 더 큰 값을 다시 m..