728x90 Python/백준47 백준 스타트와 링크 [14889] 파이썬(Python) 코드 + 해설 문제 이해하기이 문제는 브루트 포스와 백트래킹 관련 문제입니다.해결 방법팀 조합 생성: N명의 사람들 중 N/2명을 선택하여 한 팀을 구성하고, 나머지 N/2명은 다른 팀을 구성합니다.능력치 계산: 각 팀에 대해 팀에 속한 모든 쌍의 사람들에 대해 능력치를 합산합니다.차이 계산 및 최소화: 두 팀의 능력치 합의 차이를 계산하고, 그 중 최소값을 찾습니다.구현 방법입력 받기N과 능력치 행렬 SSS를 입력받습니다.사람의 번호는 0부터 N-1까지로 설정합니다.모든 팀 조합 생성N명의 사람들 중 N/2명을 선택하는 모든 조합을 생성합니다.itertools.combinations를 사용합니다.조합의 대칭성을 이용하여 전체 조합의 절반만 고려합니다.팀 능력치 합 계산각 팀 조합에 대해 다음을 수행합니다:팀 A의 능.. 2024. 10. 27. 백준 연산자 끼워넣기 [14888] 파이썬(Python) 코드 + 해설 해결 전략이 문제는 가능한 모든 연산자 배치를 시도하여 결과의 최댓값과 최솟값을 찾는 백트래킹(DFS) 문제입니다.알고리즘 개요입력받기: 수열과 연산자 개수를 입력받습니다.백트래킹 함수 구현:현재까지의 계산 결과, 사용한 연산자 개수, 수열의 인덱스를 인자로 받습니다.모든 연산자 배치를 시도합니다.각 연산자 배치마다 결과를 계산하고, 최댓값과 최솟값을 갱신합니다.나눗셈 구현:나눗셈에서 음수 처리를 문제의 요구사항에 맞게 구현합니다.결과 출력: 최종적으로 구한 최댓값과 최솟값을 출력합니다. 핵심 포인트백트래킹을 통한 완전 탐색: 모든 가능한 연산자 배치를 시도하여 최적해를 찾습니다.나눗셈의 정확한 구현: 파이썬의 나눗셈 연산과 문제의 요구사항의 차이를 이해하고 올바르게 구현합니다.연산자 우선순위 무시: 계.. 2024. 10. 26. 백준 로봇 청소기 [14503] 파이썬(Python) 코드 + 해설 문제 이해하기이 문제는 로봇 청소기가 방을 돌아다니며 청소하는 영역의 개수를 구하는 것이다.문제 설명방의 구조: N x M 크기의 직사각형 방이 있고, 각 칸은 벽(1) 또는 빈 칸(0)이다.로봇 청소기의 위치와 방향:좌표 (r, c)에 위치해 있으며, 방향 d를 가지고 있다.방향 d는 북(0), 동(1), 남(2), 서(3) 중 하나이다.로봇 청소기의 작동 방식:현재 위치를 청소한다.현재 위치에서 다음을 반복한다:주변 4칸 중 청소되지 않은 빈 칸이 있는지 확인한다.있다면, 반시계 방향으로 90도 회전하고, 전진한다.없다면, 바라보는 방향을 유지한 채로 후진한다.후진할 수 없다면 작동을 멈춘다.청소한 칸의 개수를 구한다.해결 방법: 시뮬레이션 구현이 문제는 로봇 청소기의 동작을 그대로 구현하는 시뮬레이.. 2024. 10. 25. 백준 연구소 [14502] 파이썬(Python) 코드 + 해설 #완전 탐색과 BFS 이 문제는 바이러스가 유출된 연구소에서 벽을 세워 바이러스의 확산을 막고, 안전 영역의 최대 크기를 구하는 것이 목표이다.문제 설명연구소 지도: N x M 크기의 직사각형이며, 각 칸은 다음 중 하나이다:빈 칸: 0벽: 1바이러스: 2바이러스 확산: 바이러스는 상하좌우로 인접한 빈 칸으로 퍼져나간다.벽 세우기:새로 세울 수 있는 벽의 개수는 정확히 3개이다.벽은 빈 칸에만 세울 수 있다.목표: 벽을 적절히 세워서 안전 영역(바이러스가 퍼질 수 없는 영역)의 크기를 최대로 만드는 것이다.해결 방법: 완전 탐색과 BFS 사용이 문제는 다음과 같은 방법으로 해결할 수 있다:모든 벽 세우기 경우의 수를 탐색한다:빈 칸 중에서 3개를 선택하여 벽을 세우는 모든 조합을 생성한다.N과 M이 최대.. 2024. 10. 24. 백준 퇴사 [14501] Python 코드 + 해설 문제 설명 1상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다.오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다.각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다.N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일2일3일4일5일6일7일TiPi35112421020102015402001일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다.상담을 하는데 필요한 기간은 1일보다.. 2024. 10. 23. 백준 테트로미노 [14500] Python 코드 + 해설 백준 테트로미노 14500 파이썬(python) 코드 및 해설입니다.( DFS와 브루트 포스 ) **DFS(깊이 우선 탐색)**를 사용하여 모든 가능한 모양을 탐색한다.'ㅗ' 모양은 DFS로 탐색할 수 없으므로 별도로 처리한다.경계 조건을 명확히 확인하여 인덱스 오류를 방지한다.최적화를 위해 가지치기를 사용한다.구현 단계입력 받기종이의 크기 N, M과 종이에 쓰인 수들을 입력받는다.종이의 정보를 2차원 리스트 board에 저장한다.DFS 함수 구현현재 위치에서 깊이 4까지 탐색하여 가능한 모든 모양의 합을 계산한다.이미 방문한 위치를 재방문하지 않도록 visited 배열을 사용한다.백트래킹을 통해 방문 상태를 원래대로 복구한다.가지치기를 위해 남은 칸에서 얻을 수 있는 최대 값을 미리 계산하여 합산해도 .. 2024. 10. 22. 백준 주사위 굴리기 [14499] Python 코드 + 해설 백준 주사위 굴리기 14499 파이썬(Python) 정답 코드 및 해설입니다.이 문제에서는 N x M 크기의 지도 위에 주사위가 놓여 있고, 주어진 명령에 따라 주사위를 굴리면서 특정 규칙에 따라 지도의 숫자와 주사위의 숫자를 변경한다.주사위의 초기 상태와 전개도주사위의 초기 전개도는 다음과 같다: 24 1 3 5 6윗면: 1아랫면: 6앞면: 5뒷면: 2왼쪽 면: 4오른쪽 면: 3주사위의 모든 면에는 처음에 0이 적혀 있다.이동 규칙주사위를 이동시킨다.이동 방향은 동쪽(1), 서쪽(2), 북쪽(3), 남쪽(4)이다.주사위를 이동시킬 때 지도의 바깥으로 이동하려고 하면 그 명령은 무시한다.이동한 칸에 쓰여 있는 수에 따라 다음을 수행한다:칸의 수가 0이면: 주사위의 바닥면에 쓰여 있는 수를 칸에 복사.. 2024. 10. 22. 백준 시험 감독 [13458] Python 코드 + 해설 이 문제에서는 여러 시험장이 있고, 각 시험장마다 응시자의 수가 주어진다. 각 시험장에는 반드시 총감독관이 1명 있어야 하며, 총감독관은 최대 B명의 응시자를 감독할 수 있다. 추가로 필요한 경우 부감독관을 여러 명 배치할 수 있으며, 부감독관 한 명은 최대 C명의 응시자를 감독할 수 있다.모든 응시생을 감독하기 위해 필요한 최소한의 감독관 수를 계산하는 것이다.해결 방법: 수학적 계산을 통한 최적화이 문제는 각 시험장마다 필요한 감독관의 수를 계산하여 합산하면 된다. 중요한 점은 각 시험장마다 반드시 총감독관이 1명 있어야 한다는 것이다.구현 단계입력 받기시험장의 수 N과 각 시험장마다의 응시자 수 A_i를 입력받는다.총감독관이 감독할 수 있는 응시자 수 B와 부감독관이 감독할 수 있는 응시자 수 C를.. 2024. 10. 22. 백준 뱀 [3190] Python 코드 + 해설 문제 설명이 게임은 뱀이 사과를 먹으면서 길어지고, 벽이나 자기 몸에 부딪히면 게임이 끝나는 간단한 규칙을 가지고 있다.게임은 N x N 크기의 정사각형 보드에서 진행된다. 뱀은 처음에 보드의 맨 위 맨 좌측에 위치하며, 오른쪽을 향하고 있다. 몇몇 칸에는 사과가 놓여있다.뱀은 매 초마다 이동하며, 이동 규칙은 다음과 같다:뱀은 머리를 다음 칸으로 이동시킨다.이동한 칸에 사과가 있으면 사과를 먹고 꼬리는 그대로 있다 (몸길이가 늘어난다).이동한 칸에 사과가 없으면 꼬리를 줄여서 몸길이는 그대로이다.만약 벽이나 자기 자신과 부딪히면 게임이 끝난다.게임이 몇 초 만에 끝나는지 계산하는 것이 이 문제의 목표이다.해결 방법: 시뮬레이션을 사용한 구현이 문제는 시뮬레이션을 통해 해결할 수 있다. 매 초마다 뱀의 .. 2024. 10. 22. 이전 1 2 3 4 5 6 다음 728x90