문제 설명자연수 x를 y로 변환하는 문제입니다. 사용할 수 있는 연산은 다음과 같습니다.x에 n을 더하기x에 2를 곱하기x에 3을 곱하기최소한의 연산으로 x를 y로 만들 수 있는 횟수를 구해야 하며, 변환이 불가능한 경우 -1을 반환해야 합니다.제한 사항1 ≤ x ≤ y ≤ 1,000,0001 ≤ n 해결 방법알고리즘: BFS (너비 우선 탐색)BFS를 사용하여 x에서 y로 변환하는 최소 연산 횟수를 찾습니다.큐를 이용해 가능한 연산 결과를 탐색하며, 방문한 숫자를 기록하여 중복 탐색을 방지합니다.목표값 y를 찾으면 해당 연산 횟수를 반환하고, 모든 경우를 탐색한 후에도 찾지 못하면 -1을 반환합니다.시간 복잡도BFS는 한 노드를 한 번씩 탐색하므로 O(N)의 시간 복잡도를 가집니다.최악의 경우 y까지 ..
문제 설명고대 문명의 유물에서 발견된 덧셈과 뺄셈 수식을 분석하여, 해당 문명이 사용한 진법을 찾아야 합니다. 주어진 수식 중 일부는 결과 값이 지워져 있으며, 해당 수식들의 결괏값을 복원해야 합니다.진법은 2진법부터 9진법 사이이며, 수식들에서 사용된 숫자를 통해 사용된 진법을 유추할 수 있습니다. 결괏값이 확정적으로 결정되지 않는 경우에는 ?로 표시해야 합니다.제한 사항2 ≤ expressions의 길이 ≤ 100수식은 "A + B = C" 혹은 "A - B = C" 형태의 문자열입니다.A, B는 두 자릿수 이하의 정수이며, C는 세 자릿수 이하의 정수 또는 X(지워진 값)입니다.진법 내에서 수식이 성립하도록 보장됩니다.해결 방법알고리즘: 비트마스킹, 진법 변환가능한 진법 유추수식에 등장하는 모든 숫..
문제 설명주어진 숫자로 이루어진 문자열 t에서 p와 길이가 같은 부분 문자열을 추출하여, 이 부분 문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 경우의 개수를 구하는 문제입니다.제한 사항1 ≤ p의 길이 ≤ 18p의 길이 ≤ t의 길이 ≤ 10,000t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.해결 방법알고리즘: 브루트포스(완전 탐색)p의 길이를 변수 size로 저장합니다.t의 모든 가능한 부분 문자열(길이 size)을 순회하면서, 해당 부분 문자열이 p보다 작거나 같은 경우를 확인합니다.조건을 만족하는 경우 answer 값을 증가시키고, 최종적으로 answer를 반환합니다.구현 방법:문자열 t에서 길이 size만큼의 부분 문자열을 slice를 사용하여 추출합니다.비교 연..
문제 설명정수 n이 주어졌을 때, 밑변의 길이와 높이가 n인 삼각형을 만들고, 맨 위 꼭짓점에서 반시계 방향으로 달팽이 채우기를 수행합니다. 이후 첫 행부터 마지막 행까지의 값을 순서대로 합쳐 새로운 배열로 반환하는 문제입니다.제한 사항n은 1 이상 1,000 이하입니다.해결 방법알고리즘: 시뮬레이션초기 설정: n x n 크기의 2차원 배열을 생성합니다.방향 설정: 아래 → 오른쪽 → 위로 이동하는 방향을 담은 배열 dir을 정의합니다.반복문을 통해 값 채우기:현재 방향을 기준으로 값을 채우고, 범위가 끝나면 다음 방향으로 전환합니다.각 단계에서 현재 이동 범위를 하나씩 줄이며 삼각형 형태로 값을 배치합니다.최종 배열 합치기:완성된 배열의 값을 행 순서대로 합쳐 최종 결과를 반환합니다.시간 복잡도시간 복..
문제 설명n개의 송전탑이 전선으로 하나의 트리 형태로 연결되어 있습니다. 이 중 한 개의 전선을 끊어 전력망 네트워크를 두 개로 분리하려고 합니다. 이때 두 전력망이 가지는 송전탑의 개수를 최대한 비슷하게 맞추고자 합니다. 두 전력망의 송전탑 개수 차이(절대값)를 최소화하는 값을 구하는 문제입니다.제한 사항n: 송전탑의 개수는 2 이상 100 이하인 자연수입니다.wires: 길이가 n-1인 정수형 2차원 배열로, [v1, v2]는 v1번 송전탑과 v2번 송전탑이 연결되어 있음을 나타냅니다.1 ≤ v1 전력망 네트워크는 항상 하나의 트리 형태로 입력됩니다.해결 방법알고리즘: 그래프 탐색 (브루트 포스)그래프 표현:송전탑과 전선 정보를 인접 리스트 형태로 그래프를 구성합니다.전선 끊기 시뮬레이션:주어진 전선..
문제 설명n명의 사람이 일렬로 줄을 설 때, 이들을 나열하는 모든 경우를 사전 순으로 나열했을 때, k번째 순열을 구하는 문제입니다.예를 들어, n이 3일 경우 가능한 순열은 다음과 같습니다:[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1]이 중에서 k번째 순열을 반환해야 합니다.제한 사항n은 1 이상 20 이하의 자연수입니다.k는 n! 이하의 자연수입니다.해결 방법알고리즘: 순열과 팩토리얼을 활용한 탐욕적 선택팩토리얼 계산: 각 숫자의 자리수를 결정하기 위해 1부터 n까지의 팩토리얼을 미리 계산합니다.k를 활용한 인덱스 계산: k를 기준으로 현재 선택해야 할 숫자의 인덱스를 결정합니다. 이는 k ÷ (n-1)!로 구합니다.숫자 선택 및 제거: 계산된 인덱..
문제 설명정사각형 형태의 게임 보드와 테이블이 주어집니다. 게임 보드의 빈 공간(0)과 테이블 위의 퍼즐 조각(1)을 활용해 규칙에 맞게 최대한 많은 조각을 게임 보드에 채워야 합니다. 조각은 회전할 수 있지만 뒤집을 수는 없으며, 인접한 칸에 빈 공간이 생기지 않도록 배치해야 합니다.제한 사항게임 보드와 테이블의 크기: 3 ≤ N ≤ 50 (N × N 정사각형 격자)0: 빈 칸, 1: 조각이 놓인 칸퍼즐 조각 크기: 최소 1 × 1 ~ 최대 6 × 6 연결된 형태게임 보드와 테이블은 반드시 하나 이상의 빈 칸 또는 조각을 포함해결 방법알고리즘: BFS, 회전, 맵(HashMap)퍼즐 조각 탐색:BFS를 사용해 테이블과 게임 보드의 퍼즐 조각을 탐색합니다.각 조각의 모양을 추출하고, 크기와 경계 정보를 ..
문제 설명실내공조 제어 시스템은 차량 내부 승객의 쾌적한 환경을 유지하기 위해 실내온도를 제어하며, 주어진 범위 내에서 실내온도를 유지하기 위한 최소 소비전력을 계산해야 합니다. 초기 실내온도는 실외온도와 같으며, 에어컨 전원을 켜고 희망온도를 설정하면 실내온도가 매 분 1도씩 희망온도와 같아지는 방향으로 변화합니다. 에어컨의 소비전력은 희망온도와 실내온도의 상태에 따라 다르게 소비됩니다.제한사항온도 범위: -10 ≤ 실외온도 ≤ 40, -10 ≤ t1 소비전력: 1 ≤ a, b ≤ 100a: 희망온도와 실내온도가 다를 때의 1분당 소비전력b: 희망온도와 실내온도가 같을 때의 1분당 소비전력배열 조건:onboard는 길이가 2 이상, 최대 1,000이며 0 또는 1로 구성onboard[0]은 항상 0이고..