문제 요약 : 연결되어 있는 1들의 그룹에 대해 몇개의 그룹인지, 그룹 당 1의 개수를 도출해내야 하는 문제
N*M 크기의 배열에서 , (0,0) 부터 시작하여 (N,M)까지 좌표값이 1인 경우로만 가는데 최단경로 2. 해결 방법 생각해보자 ... 최단경로라면
아기상어의 위치에서 시작하여 먹을 수 있는 최대 물고기를 구하는 문제 아기상어 초기 크기 : 2 , 위치 : 입력값중 9의 좌표일 때 먹을 수 있는
N\*N크기의 맵에 바다와 여러개의 육지정보가 담겨져있음. 바다=0, 육지=1육지와 육지 사이의 최단거리를 구하는 문제 (각 육지: 상하좌우로 연결된 1) 1\. 각 육지를 구분할
(0,0)에서 BFS 시작, 1을 만나면 해당 좌표에 +1 을 한다.배열에서 3 이상인 값은 0으로 만들고(2변 이상 실내온도의 공기와 접촉), 2인 값은
배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값 전체 경우의 수를 계산해야함 = 백트래킹1-1 시작지점, 조건문, 리턴지점시작 지점 : 새로운 배열 \[] 생성 , 조건에
카드 3장의 합,근데 이제 M을 넘지 않는. // 카드 3장의 전체 경우의 수를 구해야 함 = 백트래킹 // 1-1 방법 : 3중 반복문을 돌려 중복없이 3장의 카드의 합을 구함1-2 중복없이 == 1,2
N\*N의 배열에서 N/2 의 명으로 이루어진 2개의 팀으로 나뉨
1부터 까지 자연수 중에서 중복없이 M개를 골랐을 때의 경우의 수중복없이 M개를 뽑는 모든 경우의 수를 구해야 함 == 백트래킹dfs 함수 인자로 배열을 사용 arr = \[]arr 에 i
1. 문제 링크 및 문제 https://www.acmicpc.net/problem/14888 1-1 문제 요약 : + - * % 의 개수와 배열이 주어질 때 최대값 2. 해결 방법 생각해보자 ... 모든 경우의 수 계산 = 완전탐색 3. 코드 참고 https:
(0,0) 부터 시작하여 (N,M)까지 좌표값이 1인 경우로만 가는데 최단경로최단경로라면 bfs로 접근해보자BFS(x,y) 시작지점 및 종료시점, 탐색방법 생각해보
: '1' 주변에 '0'이 2개 이상 있을 때 0으로 만들어야 함.추가조건 0이 1 내부에 둘러쌓여 있을 때 제외(0,0)에서 BFS 시작, 1을 만나면 해당 좌표에 +1 을 한다.배열에서 3 이상인 값은 0으로 만들고(2변 이상 실내온도의 공기와 접촉), 2인 값은
N\*M 의 연구소에서 2 근처에 벽을 3개 세워 퍼지는 것을 최대한 막는 문제, 1의 최대 개수를 구하는 문제makeWall() : '2' 옆에 서로다른 3개의 벽을 만들기1-1. 서로다른
높이별로 안전영역의 최대 개수0부터 최대 높이까지 Height 반복문을 돌림반복문 내용 : 2-1. 0,0 ~ N,N 까지 방문하는데2-2. 현재 map의 값이 Height 보다 높으면2-3.
R,G,B 구역 개수 프린트 && RG,B 구역 개수 프린트전체맵에서 R,G,B 의 영역 개수를 DFS() 로 구함.전체맵에서 R 을 G 로 (또는 G를 R로) 바꿔줌.다시 전체맵을 DFS(
https://www.acmicpc.net/problem/14889: N\*N의 배열에서 N/2 의 명으로 이루어진 2개의 팀으로 나뉨.(arrayi + arrayj) - (arrayx+arrayy) 의 값이 (i,j,x,y 는 다 다른 수) 최솟값인 경우
https://www.acmicpc.net/problem/14888: + - \* % 의 개수와 배열이 주어질 때 최대값모든 경우의 수 계산 = 완전탐색파이썬 코드긴 하지만, 아래와 같이 어떻게 값이 움직이는 지 따라가볼 수 있다!그림 다 가져오기엔 너무 글이
1. 문제 링크 및 문제 https://www.acmicpc.net/problem/15684 1-1 문제 요약 :N*M 크기의 맵, 가로선을 추가하여 i번 세로선의 결과가 i번으로 나와야 함. 이 때 추가해야 하는 가로선 개수의 최솟값(최대 3개) 2. 해결 방법
https://www.acmicpc.net/problem/15684:N\*M 크기의 맵, 가로선을 추가하여 i번 세로선의 결과가 i번으로 나와야 함.이 때 추가해야 하는 가로선 개수의 최솟값(최대 3개)i번 세로선의 결과가 i번으로 나오는 코드 작성 T/FFa
https://www.acmicpc.net/problem/1463: 주어진 3가지 연산 방법으로 1을 얻을 수 있는 최소 연산횟수최댓값이 10의 6승이므로 dp 를 사용해야겠구나!표로 이해dp10까지 값이 어떻게 나오는 지 아래처럼 직접 계산해본다면 이해하기
https://www.acmicpc.net/problem/2293: 주어진 동전으로 K 를 만들 수 있는 경우의 수경우의 수가 2의 31승이므로, 동적 프로그래밍(DP) 사용CoinCase 값어떤 경우의 수로 이루어져 있는가?이렇게 동전1의 경우의 수 + 동전
https://www.acmicpc.net/problem/1987: 중복되지 않게 지날 수 있는 최대 알파벳 수방문했는 지 판별 방법: 알파벳은 총 26개 이므로, boolean visited26를 만들어 판별예시 ) 백준 예시 2번3 6HFDFFBAJHGDH
https://www.acmicpc.net/problem/16437: 1번섬에 올 수 있는 양의 수후위순회 트리
https://www.acmicpc.net/problem/11660:(x1,y1) ~ (x2,y2) 합을 구함누적합 방식 이용arr, sumArr의 현재 형태구해야 하는 것 (백준 예시 1) 2,2 부터 3,4까지의 합sumArrx2 =sumArr3 로, ar
, dpi = dpi-1 + dpi-2 의 점화식을 얻게 됨.N이 90까지 가능하므로, int 형 조심
https://www.acmicpc.net/problem/12865최대 무게가 10만이므로, dp 사용
https://www.acmicpc.net/problem/9251최대 1000글자 이므로 , dp 사용A문자의 첫번째줄부터 B문제 전체와 비교하여, 최대 길이를 얻어냄백준예시 표로 이해dp1 일 때, dp2일 때A 문자열 CA 와, B 문자열 AC 까지만 비
https://www.acmicpc.net/problem/11048(r+1,c) ↓, (r,c+1) →, (r+1,c+1) ↘ 로 이동할 때 가져올 수 있는 사탕 개수의 최댓값r+1,c+1 = ↘ 대각선은 최댓값이 나올 수 없으므로,(대각선 = ↓→ , →↓
https://www.acmicpc.net/problem/11053증가하는 부분 수열 이므로,2중 반복문을 통해 변수값을 하나씩 늘려가며 계산백준예시 1을 통한 이해예시)610 20 10 30 20 50증가하는 부분 수열의 길이를 구해야함, 배열이 주어진 이상
https://www.acmicpc.net/problem/1400211053번 문제에서, dp값을 역추적하는 문제11053: https://velog.io/@mong7399/java-11053번-가장-긴-증가하는-부분-수열
https://www.acmicpc.net/problem/1937판다를 상하좌우로 움직여야 함 ==> DFS숲의 최대 크기가 500 이므로 ==> 시간초과 가능성, DP를 활용하여 불필요한 반복은 줄임.(0,0)~(N,N)까지 탐색하는 반복문에서1\. (0,0
https://www.acmicpc.net/problem/2169DP를 사용,왼쪽 오른쪽 아래쪽 만 가능 = 한 줄씩 처리하자!예시) 5 510 25 7 8 1368 24 -78 63 3212 -69 100 -29 -25\-16 -22 -57 -33 997 -
https://www.acmicpc.net/problem/22081번부터 N번까지 보석이 놓여있는 곳 까지 M개 이상 연속으로 주울 때 최대합을 구해야하므로누적합(sum)을 구해서 max (sum현재위치-sum현재위치-M , dp현재위치-1+arr현재위치)\-
https://www.acmicpc.net/problem/15681루트노드에서부터 시작해서, 연결된 노드들의 수를 구하는 문제예시백준예시 1번 그래프(공통적으로 맨 처음에 들어가는 1 + 는 자기자신을 포함해야하므로 들어간 계산과정 )루트노드 5의 값은 어떻
https://www.acmicpc.net/problem/1949트리 + dp + dfs 문제이므로 top-down 으로 내려갔다가 올라오면서 dp배열을 업데이트 해주는데,dpn 은 n번 마을이 우수 마을이 아닐 때dpn 은 n번 마을이 우수마을 일 때로 나누
https://www.acmicpc.net/problem/11052N개의 카드팩을 구하기 위한 최대 가격이므로 동적 프로그래밍, dp를 사용한다..dpi = i개의 카드팩을 구하기 위한 최대 가격 으로 출력해야겠지?따라서 dpi = max(dpi, i장일때 다
1. 문제 링크 및 문제 https://www.acmicpc.net/problem/1535 2. 해결 방법 생각해보자 ... 3. 코드
https://www.acmicpc.net/problem/1484현재몸무게 = x , 기억몸무게 = y 라고 가정했을 때 주어지는 G는G = x^2 - y^2 이므로, x 와 y 값을 바꿔가며 해당 식이 성립할 때의 값을 찾는다.만약 x^2 - y^2 >= G
https://www.acmicpc.net/problem/14501범위가 크므로 dp를 사용하여 해결점화식을 세워보자! ( 상담일수 배열 DayArr, 이익 배열 MoneyArr )우선,상담일수에 따른 최대이익으로 세워야하므로? dp상담일수 = 최대이익i일
https://www.acmicpc.net/problem/14500DFS를 사용하면 된다.근데 저렇게 다양한 도형을 회전,대칭 다 어떻게 하냐!는 한가지 상황만 예외처리 해주면, 일반 DFS 문제랑 똑같이 풀린다.내가 너무 어렵게 생각했다한 좌표 -> 상, 하
1. 문제 링크 및 문제 https://www.acmicpc.net/problem/2616 2. 해결 방법 생각해보자 ... 소형기관차 3대를 이용하여 최대로 운송할 수 있는 손님 수를 구해야 하므로 => dp 사용 -> dp소형기관차 3대 생성 한 대의 소형 기관
1. 문제 링크 및 문제 https://www.acmicpc.net/problem/3079 2. 해결 방법 생각해보자 ... 처음에 문제 읽으면서 dp인가 했는데 범위보고 입 벌어짐 => 1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000 이분탐색
카드 3장의 합,근데 이제 M을 넘지 않는.카드 3장의 전체 경우의 수를 구해야 함 = 백트래킹1-1 방법 : 3중 반복문을 돌려 중복없이 3장의 카드의 합을 구함1-2 중복없이 == 1,2,
그룹 당 1의 개수를 도출해내야 하는 문제(0,0)부터 마지막(n,n)까지 반복문 생성, 1일때만 GO !1일 때 상하좌우로 이동하며 연결된
https://www.acmicpc.net/problem/1717두 원소의 합집합을 확인하는 문제이므로,유니온파인드의 정석인 문제이다.
백준예시 1초기값 각 노드들, parenti = i 첫번째 판두번째 판세번째 판네번째 판다섯번째 판처음 유니온 파인드 공부할 때 이해가 안갔었는데,연결시켜줄 때 0 과 4를 연결시켜주는 것이 아닌0의 루트노드와 4의 루트노드를 연결하는 것이기 때문에0과 5를 연결시켜주
https://www.acmicpc.net/problem/9935빈 문자열을 생성하여, 문제에서 주어진 문자열의 첫번째 자리부터 하나씩 추가한다.추가하다가 폭발문자열 길이와 같거나 클 때, 문자열(문자열길이 - 폭발문자열길이, 문자열길이),폭발문자열과 비교한다
https://www.acmicpc.net/problem/3078슬라이딩 윈도우 기법과 해시맵을 사용한다.해시맵 = (이름길이수, 몇명)해당 예시로 함께 설명 - 백준 예시 1)1\. int\[] 배열에 1번부터 N번까지 친구들 이름의 '길이'로 생성2\. 1
N\*N크기의 맵에 바다와 여러개의 육지정보가 담겨져있음. 바다=0, 육지=1육지와 육지 사이의 최단거리를 구하는 문제 (각 육지: 상하좌우로 연결된 1) 1\. 육지 구분 : 연결
https://www.acmicpc.net/problem/1946순위가 낮을수록, 즉 오름차순으로 정렬해야 원하는 결과값을 얻을 수 있음.(1등,2등,3등 .. )1\. 서류순위를 기준으로 오름차순 정렬한 뒤,2\. 서류 2등부터 면접 순위만으로 판단(서류 1
https://www.acmicpc.net/problem/14490.5 간격으로 테이프를 설치해줘야하니,1부터라고 하면 0.5 ~3부터라고 하면 2.5~ 설치해줘야 하기 때문에테이프의 범위를 잘 설정하여 반복문을 돌리면서 확인하면 된다.
https://www.acmicpc.net/problem/17086처음에 1부터 1까지의 거리인 줄 알았는데,맵의 수많은 0부터 1까지의 거리였다. 그 중 최장거리를 구하는 문제반복문 돌리다 0일 때 BFS1이 나오면 거리 return
https://www.acmicpc.net/problem/94661\. 그래프 탐색으로 팀인 지 확인 후, 전체 학생 수 - 팀인 학생 수2\. 팀인 지 확인하는 방법팀이 만들어지는 경우 (= 싸이클이 형성된 경우)자기 자신 선택한 경우 ( 혼자 팀 가능 )선
문제요약서로 다른 N개의 탑이 왼쪽으로 레이저를 쏠 때, 제일 먼저 만나는 단 하나의 탑에서만 수신 가능탑들의 개수 N과 탑들의 높이가 주어질 때, 각각의 탑에서 발사한 레이저 신호를 어느 탑에서 수신하는지 구하라앞이 자기보다 작을 때는 더 앞으로 가능, 더 크면 re
https://www.acmicpc.net/problem/1238문제요약N명의 학생이 X번 마을에 모여 파티 진행마을 사이 M개의 단방향 도로, i번째 길 T 의 시간N명의 학생들 중 오고 가는데 가장 오래 걸리는 학생 ( 최단 시간 )해결방법 ( 시간제한 1
https://www.acmicpc.net/problem/2015누적합을 활용하는 문제였는데, N과 K의 범위가 어마어마하다!❌ 처음에 2중 반복문을 돌려 sumArri == K + sumArri-j 인 값을 구했으나 시간 초과!⭕️ 맵 자료구조를 사용맵(ke
https://www.acmicpc.net/problem/11000주어진 백준 예시를 보면서 이해해보자면1 시작 3 끝2 시작 4 끝3 시작 5 끝 이므로,강의실 1 : 1 시작 3 끝, 3 시작 5 끝강의실 2 : 2 시작 4 끝이렇게 2개의 강의실만 사용하
문제 링크: https://www.acmicpc.net/problem/17837구현...문제푸는데 하루종일 걸렸지만 너무 재밌었당\~~
https://www.acmicpc.net/problem/13335큐에 들어오는 트럭을 입력하는데, 트럭은 자신의 무게와 다리 위치를 가지고 있다.그 점을 활용하여 다리 길이와 다리 최대 하중의 조건에 맞게 큐에 넣고 빼면서 시간 ++!다른 분들은 bridge
https://www.acmicpc.net/problem/1976그래프 탐색을 하여 여행 계획에 속한 도시들을 방문이 가능한 지 확인하는 것이 문제의 핵심이라고 생각했다.1\. 그래프 탐색 은 풀어왔던대로 인접 행렬 int\[]\[] 또는 인접 그래프 Arra
https://www.acmicpc.net/problem/1374현재 강의가 끝나는 시간과 다음 강의가 시작하는 시간을 비교하여다음 강의 시작 시간 >= 현재 강의 끝나는 시간 이라면, 현재 강의실 사용아니라면, 다른 강의실을 써서 최종적으로 사용한 강의실의
https://www.acmicpc.net/problem/1158큐Arraylist에서 제거될 사람을 한 명씩 remove배열 복습중이라 2번 방법으로 풀었고, 백준 예시 1로 설명해보겠습니다노란색 셀 : 현재 제거된 사람 번호문제 : 7명, 3번째 사람을 순
https://www.acmicpc.net/problem/1940N개의 재료 중 두 개의 재료로 M이 되는 갑옷을 만들어야 함.N의 최댓값이 15000일 때 값을 하나씩 비교한다면 15000\*15000으로 2초 안에 해결할 수 없음\-> 투포인터를 사용하여
https://www.acmicpc.net/problem/128910~P까지의 문자 비교1~P+1 문자 비교2~P+2 문자 비교를 해야하므로 위와 같은 슬라이딩 윈도우 과정을 거친다.문자를 비교하는 방법은 A,G,C,T 만 사용하므로각각을 알파벳 순서에 맞춰
https://school.programmers.co.kr/learn/courses/30/lessons/49191플로이드 워셜 알고리즘을 통해, 사이에 잃어버린 기록을 찾아준다 ! 어떻게 !?4,3 == 4번 선수가 3번 선수를 이겼다.3,2 == 3번 선수가
처음에 sequence의 길이가 길어 동적계획법을 생각했다.하지만 점화식이 곧바로 그려지지 않았고 한 방법을 떠오르듯 다른 분들의 코드를 참고했다.그럼 문제를 해결해보자.모든 값에 1 을 곱해보고 -1 도 곱해보고 또 곱해서 나온 값들의 연속된 부분의 합을 구해야 한다
https://www.acmicpc.net/problem/2143문제를 보면 A,B 배열에서 특정 범위 내의 연속된 값을 더해 T 값을 구한다. 그럼 A 배열에서 나올 수 있는 모든 연속된 값을 구한다.B 배열에서 나올 수 있는 모든 연속된 값을 더하면서, 나
string 을 0부터 마지막 자리까지 탐색하는 반복문 작성각 숫자는 공백으로 구분되어 있으므로,공백 나오기 전 까지빈 tmp 생성해 현재 자리값 더해주기공백 나오면tmp 을 vector 에 추가tmp 초기화vetor 정렬맨 앞에 값, 맨 뒤에 값 출력
문제 링크 !첫 문자는 무조건 대문자으므로 대문자 넣어주고두번째 문자부터는 내 이전 문자가 공백인가 ? 그럼 대문자 : 아니면 소문자