최소 신장 트리를 이용해야한다는 고정 관념때문에 힘들었던 문제다. 또한, 조합을 만들어야 하는데 순서대로 세워두고 처음부터 끊어서 이상한 조합을 만들었다. 확실하게 검증이 끝난 후에 코드로 구현해야하는 것을 명심해야한다.조합 + dfs1개부터 N//2까지 조합을 만든다
시간 복잡도는 20^2\*(20^2) 정도이므로 시간은 여유롭다각 선거구의 번호를 정하는 수식 만들기가 힘들었음경계의 시작점을 기준으로 찾아봄1,4번 구역은 행과 열을 더한 값 이용2,3번 구역은 열-행을 이용3번: 각 행의 경계 부분의 열-행 값은 동일문제에서 x를
아이디어 및 구현 방법괄호가 들어갈 수 있는 경우의 수를 부분집합으로 표현연산자를 기준으로 했을 때 괄호가 들어간다면 부분집합에 포함재귀 함수괄호가 생길때마다 s 리스트에 넣어줌재귀를 호출하여 처음 들어갈때는 전에 선택된 인덱스+2부터 시작괄호의 중복을 피하기 위함만들
매년 시작할 때 sort를 해줬으나 처음 인풋에는 한 곳에 여러 나무가 주어지지는 않는다고 한 점을 이용했다. 이후에 추가되는 나무의 나이는 모두 1세이므로 처음 나무보단 나이가 적을 수 밖에 없다. 따라서 deque를 이용했다.그래도 여전히 시간초과가 발생했고, 시간
방향 정보주어진 방향 정보를 그대로 이용하여 수식을 세우기엔 복잡함수식을 세우기 쉽게 방향 정보를 변경낚시왕 이동열의 처음부터 마지막까지만 이동하면 되므로 for문 이용낚시해당 열에서 상어들 중 가장 윗 행의 상어를 잡음상어 이동이중 반복문을 이용하여 한칸씩 이동하려
각 섬들의 번호 붙이기bfs다리 만들기 (bfs 이용)처음에 들어온 좌표에서 네 방향 탐색해서 바다인 곳만 덱에 넣고 방향정보까지 같이 넣어줌같이 넣어준 방향만 이동하며 탐색길이가 2이상이고, 자기 섬이면 안된다위 조건이 없으면 바다로 나아감어떠한 섬을 연결해야 최소가
시뮬레이션모래를 계산할 때, 좌표, 방향에 따라 모두 if 분기를 하려고 하니 200라인이 넘어감델타를 이용하되 dy,dx로 쪼갤 것총 방향은 4개이고, 모래가 날아가는 횟수는 10이므로 델타는 4이면 된다.토네이도 이동 함수무조건 꺾어지려는 성질 이용이동 방향에 따라
시뮬레이션움직이기 전 파이어볼의 정보를 저장하는 before 리스트이동 로직 함수를 만들어서 이동visited를 딕셔너리로 만들어서 해당위치에 있는 파이어볼 갯수 파악딕셔너리 키에 튜플도 가능visited에 있는 데이터들을 before에 넣음위 과정을 K번 반복행이나
시뮬레이션Q회 반복문 돌면서 각 단계 시행단계에 맞게 칸을 분할하여 시계방향으로 90도 회전분할된 크기만큼씩 회전수식을 만들기가 까다로웠음분할된 크기의 사각형을 기준 (분할 크기만큼 나눴을 때의 나머지를 이용하면 계산 쉬워짐)사각형의 시작 행 + 현재 열을 분할 크기만
아이디어 및 구현방법회전 연산의 순서에 따라 최종 배열이 달라진다 했으므로 모든 경우의 수를 따져야함순열 이용순서에 상관있으므로회전Direct 리스트를 이용하여 방향 전환 정보 설정direct 리스트의 방향 정보를 이용하여 인덱스를 옮겨가면서 값을 이동시킴새로 저장 될
구현학생별 좋아하는 사람을 딕셔너리 형태로 저장인접칸 조사할 때, 우선순위를 이용하기 위해 리스트 소팅 사용좋아하는 사람의 수비어있는 칸의 수행 번호 작은 순열 번호 작은 순=> 리스트에 묶어서 한번에 넣기=> 나중에 한번 소팅후보 리스트(cand)의 맨 앞에 있는 요
BFSO(n^2)주어진 맵 정보에 손님 번호를 추가로 표시 해줌손님의 위치와 도착지 정보를 각각 리스트로 만듬손님 번호 리스트를 만듬=> 여러 명의 손님이 같은 도착지를 공유할 때, 정보가 덮어씌워지므로 에러주어진 맵 정보는 건드리지 않음손님의 출발지 정보와 도착지 정
시뮬레이션상어 1~M 까지 순회4 방향을 탐색하되 현재 방향정보의 우선 순위대로 탐색한다.우선 순위대로 탐색하면 나중에 다시 우선순위대로 뽑을 필요가 없음냄새가 없는 곳과 자기 냄새가 있는 곳을 따로 둔다.이동시킨 상어를 임시 딕셔너리에 저장 (아직 이동시키면 안됨)해
아이디어M개의 바이러스로 이루어진 조합을 만듬만들어진 바이러스 조합을 이용하여 각각의 경우에서 bfs 탐색구현 방법조합순열을 만들때의 함수를 변형하여 만듬bfsdeque에 집어넣을때 time 정보까지 같이 넣어줌Time 정보를 visited에 표시visited에 표시하
아이디어원판을 원형 리스트로 바꿔 생각구현 방법원판 돌리기(rotate)Temp_keep에는 다음거를 덮어씌우기 전에 미리 저장Temp_pull에 담겨져 있는 값으로 덮어 씌움Temp_pull에는 temp_keep의 값을 넣어줌같은 값이 있는지 확인(check)같은 값
100초까지는 출력해야 함C 연산은 map과 zip을 이용갯수는 collections의 Counter 라이브러리 이용최댓값 찾을 때,이용
4^10 개의 중복 순열을 고려해야한다. 이를 완전 탐색할 경우, 2^20 = 1,048,576이기 때문에 시간초과가 나지 않는다. 따라서 dfs를 이용한 완전 탐색을 해야한다. 또한, 문제에서 주어진 조건에 해당하지 않는 것은 백트래킹을 이용하면 시간이 충분하다.둘레
시뮬레이션준비물고기의 좌표와 방향 정보를 저장하기 위한 딕셔너리여러 정보를 저장해야하므로 리스트보다는 딕셔너리가 낫다고 판단방향 정보를 담는 direct 리스트상어가 (0,0)으로 들어와서 물고기를 먹음함수물고기가 이동이동할 자리에 물고기가 없을 경우이동원래 자리는 0
시뮬레이션컨베이어 벨트를 위,아래로 나눔 (덱 이용) / 로봇 위치 (덱 이용)로봇 옮기는 작업회전컨베이어 벨트 회전덱 이용로봇도 같이 회전이동맨 마지막 로봇 내리기중간에 있는 로봇 이동맨 앞에 로봇 올리기체크로봇이 어떤 칸에 올라가거나 이동하면 그 칸의 내구도는 즉시
처음 생각했던 아이디어가로,세로,대각선 정보에 따라 다음에 갈 수 있는 곳을 다시 각각 가로,세로,대각선 함수를 이용하여 해결하려고 했음0%에서 시간 초과 발생그 다음 생각했던 아이디어이미 들어온 곳에 다른 경로나 막대 방향으로 들어온다면 원래 있던 가짓 수에서 들어온