목록algorithms (25)
yuns
문제 링크 어항 정리 문제 요약 물고기가 가장 적은 어항에 물고기 한 마리씨 구착 달팽이 모양으로 계속 쌓일 때까지 말아주기 어항 내 물고기 수 조절 인접한 두 어항의 개체수 차이가 5이상일 경우, 5로 나눈 몫의 수만큼 물고기 이동 세로로 어항이 쌓였을 경우 아래가 제일 왼쪽에 오도록 순서 배치 공중부양 작업 어항 내 물고기 수 조절 물고기의 최대와 최소의 차이가 k개이하가 될 때까지 1-6반복 아이디어 정리 문제 풀이 아이디어 정리에 사용한 대로 코드 작성 n, k = map(int, input().split()) fish = list(map(int, input().split())) def fill_fish(): min_fish = min(fish) for i in range(n): if fish[i..
문제 링크 https://www.acmicpc.net/problem/19238 문제 요약 및 아이디 어 정리 택시의 현 시점에서 고객의 위치 거리 계산 후, [거리, 행, 열] 순으로 가장 짧은 위치에 있는 고객에게 이동 가는 동안 연료가 떨어질 경우 -1 출력 고객의 위치에서 도착지까지 이동할 경우 가는 동안 연료가 떨어질 경우 -1 출력 아닐 경우, 이동 거리만큼 연료를 감소시키고, 고객이 내린 뒤에는 연료만큼 증가 모든 고객이 다 이동할 경우 남은 연료의 양 출력 아닐 경우 -1 출력 문제 풀이 아이디어 정리에 사용한 대로 코드 작성 from collections import deque n, m, k = map(int, input().split()) maps = [list(map(int, input..
문제 링크 https://www.acmicpc.net/problem/23288 문제 요약 초기화 단계에서, 정답에 더해지는 값을 미리 저장해놓는 score판을 필요로 한다. 아이디어 정리 더해지는 점수는 연결 되어 있는 지도 위의 값들의 수이기 때문에 처음에 최초로 score의 배열을 만들어둔다. 주사위의 이동 방향은 아래의 모듈러 연산은 이용하여 계산한다. def decide_direction(dice_num, map_num): global direction if dice_num > map_num: direction = (direction + 1) % 4 elif dice_num < map_num: direction = (direction + 3) % 4 문제 풀이 아이디어 정리에 사용한 대로 코드 작..
문제 링크 https://www.acmicpc.net/problem/23289 문제 요약 지도위에 있는 숫자가 0일 경우와 아닐 경우 각각 다르게 지도와 주사위를 업데이트 해준다 지도위에 있는 숫자가 0일 경우 주사위 바닥면을 지도 위에 복사 지도위에 있는 숫자가 0이 아닐 경우 주사위 바닥면을 지도위의 숫자로 바꾼 뒤, 지도위의 숫자를 0으로 세팅 아이디어 정리 아래 과정이 필요 동, 서, 북, 남을 옮길 때 주사위 위치를 dxy로 선언해준다. 주사위의 list을 문제에서 주어진 1-6의 위치를 순으로 나열한다. 방향에 따라 돌아가는 주사위를 고려하여 주사위의 순서를 바꿔준다. 문제에서 주사위를 굴린 뒤, 나온 지도위의 숫자에 따라 주사위와 지도의 값을 바꿔준다. 문제 풀이 아이디어 정리에 사용한 대로..
문제 링크 https://www.acmicpc.net/problem/21609 문제 요약 아이디어 정리 다음과 같은 순서대로 동작한다. 가장 넓은 범위를 가지는 블록을 선택해야 한다. bfs을 이용할 것이며, visited를 이용하여 방문한 경우를 제외하고 탐색한다. 여기서 rainbow에 해당하는 경우는 visited하지 않았다고 해서 다른 탐색을 할 때, 해당 영역도 포함하여 탐색이 가능하도록 해야 한다. 가장 넓은 범위를 가지는 블록의 값을 의미 없는 값인 -2로 설정한다. 중력과 회전하는 코드를 입력 위의 방법을 블록이 없을 때까지 반복한다. 문제 풀이 아이디어 정리에 사용한 대로 코드 작성 from collections import deque n, m = map(int, input().split..
문제 링크 https://www.acmicpc.net/problem/21610 문제 요약 구름이 이동함에 따라 지역마다 물의 양이 감소 혹은 증가함 아이디어 정리 아래 과정이 필요 이동한 구름의 위치 파악 한 뒤, 물의 양을 증가시킨다. 여기서 배열의 범위를 넘어갈 경우 반대쪽으로 넘어서 돌아오는 것을 고려해야함 물이 증가한 위치에서 대각선 방향에 있는 물이 있는 지역을 기준으로 물의 양을 증가시킴 1번 과정과 달리 범위를 넘어갈 경우 없다고 판단 새로운 구름의 위치를 알아내는 과정 전체 지역에서 구름의 위치가 기존 구름과 겹치지 않도록 하면서 2이상인 지역으로 추가 문제 풀이 n, m = map(int, input().split()) maps = [] for _ in range(n): maps.appe..
문제 링크 https://www.acmicpc.net/problem/23289 문제 요약 아이디어 정리 온풍기에서 나온 바람이 벽의 위치에 따라 전파되는 정도가 다름 → bfs와 아래 규칙을 이용하여 온도를 계산 문제 풀이 아이디어 정리에 사용한 대로 코드 작성 from collections import deque r, c, k = map(int, input().split()) checked_pos = [] # 체크할 온풍기 위치 heater = [] # 온풍기 위치 ([온풍기 위치x, 온풍기 위치y, 방향]) for i in range(r): tmp = list(map(int, input().split())) for j, t in enumerate(tmp): if t == 0: continue if 0..
programmers.co.kr/learn/courses/30/lessons/67257 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산..