문제 설명n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다.노드의 개수 n,
고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야
학생수와 예산의 수가 주어지고, 학생 수 만큼 각각 물건 값과 배송비가 주어진다.물건 값을 반으로 할인받을 수 있는 할인쿠폰이 존재할때최대로 선물할 수 있는 학생의 수는 ?정렬을 애매하게 함 -> 여러버전으로 하긴 했지만 (할인 받은 금액 기준, 할인 안받은 금액 기
문제 링크n명의 사람들이 m개의 치즈를 나눠 먹었는데1개의 치즈가 상해서 배탈이 났다.k번째 사람이 q번째 치즈를 r 때 먹은 내용이 d번 주어지고p번째 사람이 w때부터 아프기 시작한 내용이 s번 주어진다.이때 필요한 약의 개수1개의 치즈라는 걸 인지 못하고 p번째 사
문제링크n개의 수가 주어지는데, 이 값들에서 최대 - 최소가 k이하가 되야한다수가 변경되면 변경된 값의 차이의 절대 값만큼(|a - b|) 비용이 들때 이를 만족하는 경우를 만드는 최소 비용은?범위 내의 차를 만들기 위해 최대 최소의 차이를 구해서 이를 더해주거나 빼줌
문제링크x1, x2의 범위가 n개 주어지고n개 중 1개를 제외했을 때,n-1개의 선분이 겹치는 경우가 있는지전체를 한 Array에 표시하고, 겹치는 공간이 n - 1개 이상이면 선분 하나를 지웠을 때 조건에 만족하는 경우가 무조건 생김maxX1 <= minX2가
문제링크n명의 사람이 m개의 메세지를 보냈다누가 보낸 메세지를 몇명이 안읽었는지 m개가 나와있고p번째 메세지를 안 읽은 사람을 출력단 사람은 1번부터 A, B, C, D,,,,m개의 메세지 관련 정보가 A 0 식으로 들어오기 때문에 String으로 받아줌확인하고 싶은
문제링크달려가야할 거리 x가 주어지고속력은 1로 시작하는데 도착 시 속력은 1이어야한다.x까지 걸리는 최소 시간은?속력을 높이고, 유지하고, 줄이는 기준을 세우는 것이 너무 어려웠음..speed + 1에서 1까지의 총 합이 남은 거리보다 작거나 같다 => 속력 증가sp
문제 링크아 시간복잡도 너무 어렵다.위 코드의 시간 복잡도?O(N^2)까지는 이해 (맨 바깥의 for문)0 ~ i까지 진행 => i + 1번 진행 O(i)i가 0 ~ n \* n이기 때문에 k for문의 시간 복잡도는 O(n \* n)n ~ 0까지 진행 => n번 진행
공간 복잡도는 코드가 차지하는 메모리를 나타낸다 set arr = \[n]\[n];이면 O(N^2)이렇게 할당을 해주는 부분이 메모리를 차지하니까 이걸로 공간 복잡도를 판단문제링크set list = \[n]\[n]에서 공간 복잡도가 O(N^2)인 것을 알게 됨또 set
단일 연결 리스트 단일 연결 리스트 역시 배열과 마찬가지로 삽입, 삭제, 탐색이 모두 가능한 자료구조 입니다. 탐색: Head부터 Tail까지 일일이 확인해야 하므로 O(N) 이라는 시간이 소요됩니다. 삽입과 삭제: 단일 연결 리스트에서는 삽입, 삭제의 경우 인접한
단일 연결 리스트 단일 연결 리스트 역시 배열과 마찬가지로 삽입, 삭제, 탐색이 모두 가능한 자료구조 입니다. 탐색: Head부터 Tail까지 일일이 확인해야 하므로 O(N) 이라는 시간이 소요됩니다. 삽입과 삭제: 단일 연결 리스트에서는 삽입, 삭제의 경우 인접한
void addFirst(Object obj)LinkedList의 맨 앞에 객체(obj)를 추가void addLast(Objec obj)LinkedList의 맨 뒤에 객체(obj)를 추가boolean add(Object obj)LinkedList의 마지막에 객체를 추가
next()기능공백(스페이스, 탭, 줄바꿈)을 기준으로 단어 하나를 읽습니다.공백 이후의 입력은 남아있습니다.사용 시점단어 단위의 입력을 읽을 때 적합합니다.특징입력이 여러 단어로 이루어진 경우, 첫 번째 단어만 반환합니다.입력 버퍼에 남아 있는 공백 또는 줄바꿈은 무
삽입 정렬 새로운 카드를 정렬되어 있는 카드 사이에 넣는 것과 비슷한 개념 두번째부터 시작해서 그 앞쪽 자료와 비교 했을때, 비교하려는 값이 더 작으면 그 자리에 넣고 원래 자리의 값은 뒤로 미는 것 예시 5 2 1 3 4 가 주어졌을때, 처음 비교할 값은 2 5
주어진 수들에서 마지막 자리로 정렬하고 맨 앞자리까지 반복하여 정렬예를들어1 22 33 14 25 42 가 있으면1 22 42 33 14 25로 정렬 (1의 자리)그 뒤에 10의 자리로 정렬1 14 22 25 33 42가 된다.1의 자리로 정렬한 상태로 저장되기 때문에
완전 이진 트리의 일종으로 우선 순위 큐를 위해 만들어진 구조최대 값, 최소 값을 쉽게 추출할 수 있다.이런 모습 (완전 이진 트리)최대 힙 트리나, 최소 힙 트리를 사용하여 정렬내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면
문제 링크1,2,3,4 를 가지고 입력된 숫자를 만드는 경우의 수 구하기예를 들어 4의 경우1 1 1 1 1 1 22 1 11 2 11 33 12 24이렇게 8개를 만든다1,2,3,4로 암호를 만들어야하기 때문에지금 수(i)의 총 합을 알기 위해서는 이전 i-1, i-
여러 개의 원소가 있고, 여러 개의 집합이 있다고 가정합시다. 특정 원소가 어떤 집합에 속해있는지 확인하고, 특정 집합을 합쳐야 할 일이 있다면 Union-Find 자료구조를 사용하면 좋습니다.\-> 트리가 있을 때, 노드에서 그 노드의 루트 노드(대표 노드)를 쉽게
문제링크n \* n에 금이 있는데 금이 있는 부분은 1 없는 부분은 0으로 주어진다금의 가격은 개당 m이고,채굴 비용은 k^2 + (k + 1)^2이다.마름모 모양으로 채굴할 수 있으며, 마름모 부분이 채굴장 밖을 벗어나도 채굴은 할 수 있으나 금은 없다.마름모를 어떻
문제링크n이 주어지고 n \* n개의 숫자가 주어진다.이 숫자들안에서 기울어진 직사각형으로 돌며 값을 더할 때, 최대가 되는 값을 구하라.도는 방향은 ↗️↖️↙️↘️이다.↙️↖️↘️↗️즉, 위 모양처럼 직사각형의 모양을 띌 수 있다.모든 직사각형의 경우를 다 판단한다.
문제링크n m 배열에 n m개의 숫자가 주어진다. 이 숫자들을 겹치지 않는 두개의 직사각형 모양으로 감싸 그 속에 있는 숫자의 합을 더한다.이 두 직사각형 속에 있는 수가 최대가 되는 경우를 구해라이전에 마름모 모양으로 숫자의 합을 더하는 것처럼 구할 수 있는 직사
문제링크n \* m 배열에 q개의 쿼리가 주어지는데x1 y1 x2 y2가 주어지고이 주어진 범위 안에서 모서리 부분을 시계 방향으로 돌리고, 범위에 속하는 모든 값들을 본인 값 + 주변의 값의 평균으로 수정한다.구간을 정하고 값들을 밀어준다
문제링크 문제 야구게임과 비슷한거 같은데 1~9까지 겹치지 않는 수의 조합으로 3자리가 주어지고 자리와 숫자가 일치하는 개수와 숫자만 일치하는 개수가 주어진다 이때 결정될 수 있는 숫자의 개수를 구하여라 위의 경우 정답은 324, 328중 하나이므로 2를 리턴하게
문제링크n \* n의 숫자 행렬이 있을때, 오른쪽, 아래로만 이동할 수 있는데(1, 1)에서 (n, n)까지의 경로에서의 최소값의 최대값을 구하라DP인 것은 알 것 같음.DP로 그냥 경로의 최소 값은 쉽게 구할 수 있음최소값의 최대값은 어떻게 구하는가 -> 핵심아래,
문제링크n \* m 배열이 물(0)과 빙하(1)로 이루어져 있다.시간이 지날 수록 물에 둘러쌓인 빙하는 외각부터 1칸씩 녹는데녹는 시간과, 마지막에 녹은 빙하의 크기를 구하라초기 빙하 -> 1초 후 빙하bfs로 외부의 물을 구하고외부의 물과 접해 있는 곳을 모두 녹임위
문제링크n \* n의 숫자로 되어 있는 격자에 k개의 나라를 방문하는데, 이 나라와 인접하고 차이가 u이상 d이하면 방문 할 수 있다.이때 방문할 수 있는 최대 나라의 수는?나라와 인접한 나라를 찾음 -> BFS최대 경우를 찾음 -> 백트래킹bfs의 백트래킹 해결이 문
문제링크n이 주어지고 4가지 연산을 사용하여 1을 만들 수 있는 연산의 최소 수를 구하라4가지 방법을 모두 사용해봐야함 -> 4군데를 도는 bfs라고 생각지나간 곳을 지나가지 않도록 하는 visited 필요 -> 범위 설정에 어려움\-> boolean\[] visite
문제링크n 이 주어지면 n개의 노드로 만들 수 있는 BST 개수 출력dp로 문제를 푸는 것은 알겠음 -> 어떤 규칙이 있는지.모든 경우의 총합을 구하기
문제링크n이 주어지고 n \* n 으로 이루어진 숫자들의 배열이 주어진다.시작점에서 본인보다 큰 수로만 이동이 가능 할 때, 최대로 이동할 수 있는 거리를 구하여라.처음에는 dp + bfs로 풀이하려다가 메모리 초과 발생dp를 찾는 함수를 구해서 풀이하려다가 원하는 답
문제링크n \* m의 숫자가 적혀있는 사각형에서 1,1에서 조건을 만족하여 밟을 수 있는 칸의 수의 최대를 구하시오.지금 밟은 칸보다 큰 수만 밟을 수 있다.지금 칸의 위치에서 최소 한 칸 오른쪽, 아래를 밟을 수 있다. (x, y -> x + 1, y + 1)int\
문제링크n개의 알바 정보가 주어졌을때, 시작일과 종료일이 겹치지 않는 경우에만 이어서 할 수 있다.이때 최대로 벌 수 있는 알바비는?dp의 전형적인 문제,시작일, 종료일, 알바비가 순서대로 주어지기 때문에종료일을 기준으로 정렬해야 알바를 가장 많이 할 수 있다. (시간