전체 글
-
2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net - 문제 설명 N * M 배열로 북극의 빙산이 주어진다. 빙산이 존재하는 칸에는 양의 정수가 주어지고, 바다인 칸에는 0이 저장된다. 빙산은 바닷물에 닿아있으면 빨리녹아 빙산에 저장된 숫자는 1년마다 빙산 주변의 바다 칸 개수만큼 숫자가 줄어든다. 빙산이 두 덩이리 이상으로 분리되는 최초의 시간(년)을 구한다. 빙산이 마지막까지 두 덩어리 이상으로 나눠지지 않는 경우 0을 출력한다. 초기 빙산 1년 후 빙산 - 접근방법 빙산을 먼저 녹인 후 BFS를 이용해..
[백준] 2573 빙산(BFS) - Python2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net - 문제 설명 N * M 배열로 북극의 빙산이 주어진다. 빙산이 존재하는 칸에는 양의 정수가 주어지고, 바다인 칸에는 0이 저장된다. 빙산은 바닷물에 닿아있으면 빨리녹아 빙산에 저장된 숫자는 1년마다 빙산 주변의 바다 칸 개수만큼 숫자가 줄어든다. 빙산이 두 덩이리 이상으로 분리되는 최초의 시간(년)을 구한다. 빙산이 마지막까지 두 덩어리 이상으로 나눠지지 않는 경우 0을 출력한다. 초기 빙산 1년 후 빙산 - 접근방법 빙산을 먼저 녹인 후 BFS를 이용해..
2023.03.27 -
1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net - 문제 설명 TV를 보다 채널을 돌리려고하는데 고장난 버튼이 있다. 고장나지 않은 버튼과 +, - 버튼을 눌러 보고싶은 채널로 이동한다. 초기에 채널은 100번채널이다. 100번에서 +, - 버튼으로 이동한 횟수와 숫자 버튼으로 이동한 후 +, - 로 다시 이동한 경우 중 최솟값을 찾는다. - 입출력 예시 - 처음 접근방법 최초에 누르려는 버튼의 길이만큼 버튼을 눌러 목표 채널과 가장 가까운채널을 찾는다. 그래서 고장나지 않은 버튼만 들어있는 ..
[백준] 1107 리모컨 - Python1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net - 문제 설명 TV를 보다 채널을 돌리려고하는데 고장난 버튼이 있다. 고장나지 않은 버튼과 +, - 버튼을 눌러 보고싶은 채널로 이동한다. 초기에 채널은 100번채널이다. 100번에서 +, - 버튼으로 이동한 횟수와 숫자 버튼으로 이동한 후 +, - 로 다시 이동한 경우 중 최솟값을 찾는다. - 입출력 예시 - 처음 접근방법 최초에 누르려는 버튼의 길이만큼 버튼을 눌러 목표 채널과 가장 가까운채널을 찾는다. 그래서 고장나지 않은 버튼만 들어있는 ..
2023.03.14 -
2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net - 문제 설명 2차원 배열 모눈종이 위에 치즈가 존재한다. 어떤 칸에 존재하는 치즈가 2칸이상 치즈가 아닌 칸 (외부 공기)로 접촉하여 있다면 그 칸의 치즈는 1시간 후 녹아 사라진다. 치즈 속에 존재하는 빈칸(치즈 속 공기)는 외부공기에 접촉하지 않았다고 생각한다. 위 그림을 보면 외부 공기와 2칸 이상 접촉한 치즈는 사라졌고 내부공기와 접촉한 치즈는 그대로 존재한다. - 접근방법 또다시 BFS로 풀어야겠다는 생각이 들었다. 내부 공기와 외부공기는..
[백준] 2638 치즈 (BFS) - Python2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net - 문제 설명 2차원 배열 모눈종이 위에 치즈가 존재한다. 어떤 칸에 존재하는 치즈가 2칸이상 치즈가 아닌 칸 (외부 공기)로 접촉하여 있다면 그 칸의 치즈는 1시간 후 녹아 사라진다. 치즈 속에 존재하는 빈칸(치즈 속 공기)는 외부공기에 접촉하지 않았다고 생각한다. 위 그림을 보면 외부 공기와 2칸 이상 접촉한 치즈는 사라졌고 내부공기와 접촉한 치즈는 그대로 존재한다. - 접근방법 또다시 BFS로 풀어야겠다는 생각이 들었다. 내부 공기와 외부공기는..
2023.03.04 -
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com - 문제 설명 N마리의 지렁이가 있다. (N은 짝수) 지렁이를 2마리씩 소개팅을 시켜준다. 소개팅을 시키기 위해선 한 지렁이가 다른 지렁이에게 이동해야한다. 지렁이는 2차원 평면에서 이동하며 점 A에 있는 지렁이가 점 B에있는 지렁이에게 이동했다면 벡터 AB가 된다. 모든 지렁이를 매칭시킨 후 나온 벡터를 모두 더한 후 그 벡터의 크기를 구한다. 벡터의 크기 |V| = |(x, y)| = x*x + y*y 주의사항 각 벡터별 크기의 합을 구하는 것이 아닌 모든 벡터를 더한 후 (방향값 포함) 남은 하나의 벡터의 크기를 구하는 것 - 접근 방법 예시의 입출력을 확인..
[SW Expert Academy] 1494 사랑의 카운슬러 (Python)SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com - 문제 설명 N마리의 지렁이가 있다. (N은 짝수) 지렁이를 2마리씩 소개팅을 시켜준다. 소개팅을 시키기 위해선 한 지렁이가 다른 지렁이에게 이동해야한다. 지렁이는 2차원 평면에서 이동하며 점 A에 있는 지렁이가 점 B에있는 지렁이에게 이동했다면 벡터 AB가 된다. 모든 지렁이를 매칭시킨 후 나온 벡터를 모두 더한 후 그 벡터의 크기를 구한다. 벡터의 크기 |V| = |(x, y)| = x*x + y*y 주의사항 각 벡터별 크기의 합을 구하는 것이 아닌 모든 벡터를 더한 후 (방향값 포함) 남은 하나의 벡터의 크기를 구하는 것 - 접근 방법 예시의 입출력을 확인..
2023.03.02 -
16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net - 문제 설명 N * N 크기의 땅이 있고, 각 칸은 각각의 나라이며 나라마다 사람이 살고있다. L, R 을 입력받고, 각 칸의 나라와 인접한 나라의 인구수 차이가 L 이상 R 이하일때 하루동안 국경이 열린다. 땅에서 열릴 수 있는 국경이 모두 열렸다면 인구이동을 한다. 인구는 인접한 땅에서 국경이 열린 나라들끼리 모두 균등하도록 이동한다. (소수점은 버림) 며칠이 지나면 더이상 인구 이동이 불가능한지 구해보자 - 입출력 예시 인구 이동 과정 국경이..
[백준] 16234 인구이동 (BFS) - Python16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net - 문제 설명 N * N 크기의 땅이 있고, 각 칸은 각각의 나라이며 나라마다 사람이 살고있다. L, R 을 입력받고, 각 칸의 나라와 인접한 나라의 인구수 차이가 L 이상 R 이하일때 하루동안 국경이 열린다. 땅에서 열릴 수 있는 국경이 모두 열렸다면 인구이동을 한다. 인구는 인접한 땅에서 국경이 열린 나라들끼리 모두 균등하도록 이동한다. (소수점은 버림) 며칠이 지나면 더이상 인구 이동이 불가능한지 구해보자 - 입출력 예시 인구 이동 과정 국경이..
2023.03.01 -
14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net - 문제 설명 연구실에서 바이러스가 유출되었는데 바이러스가 퍼지기 전에 3개의 벽을 세워 바이러스의 침입을 막는다. 바이러스가 가장 적게 퍼지도록 했을 경우의 안전구역 갯수를 반환해보자 - 접근 방법 바이러스가 없는 입력이 0인 구역에서 3개를 뽑아 벽을 세우는 모든 경우의 수를 구한다. 경우의 수마다 3개의 벽을 세웠을 때 안전구역의 개수를 구해 최댓값을 구한다. - 입출력 예시 - 코드 from itertools import combinations from collecti..
[백준] 14502 연구소(BFS) - Python14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net - 문제 설명 연구실에서 바이러스가 유출되었는데 바이러스가 퍼지기 전에 3개의 벽을 세워 바이러스의 침입을 막는다. 바이러스가 가장 적게 퍼지도록 했을 경우의 안전구역 갯수를 반환해보자 - 접근 방법 바이러스가 없는 입력이 0인 구역에서 3개를 뽑아 벽을 세우는 모든 경우의 수를 구한다. 경우의 수마다 3개의 벽을 세웠을 때 안전구역의 개수를 구해 최댓값을 구한다. - 입출력 예시 - 코드 from itertools import combinations from collecti..
2023.02.22