유니온 파인드를 사용하는 문제 재귀로 방문을 체크하는 코드이다. 만약 한번도 방문하지 않은 칸이라면 cnt와sum을 1씩 더해주고 위의 재귀문을 통하여 화살표 방향이 막힐때까지 재귀로 방문을 진행한다. visit에 카운트 수를 넣어줘서 체크한다. 만약 막히는 경우
백트래킹을 이용하여 대각선으로 이동이 가능한 비숍을 부딪히지 않게 배치하는 문제이다.그냥 풀게되면 시간초과가 발생하게 되는데, 체스판의 하얀 부분과 까만 부분에 두는 비숍은 어떻게 두더라도 둘이 부딪힐 일이 없다는 것을 이용하여 둘을 아예 분리해서 풀어야 시간초과가 나
3 X 3 슬라이딩 퍼즐을 움직여 원래대로 맞추는 문제.그냥 int 배열을 queue에 저장하여 풀었더니 메모리 초과가 나서 다른 사람의 풀이를 보고 아이디어를 얻었다.int 배열이 아니라 "1234567890" 식의 문자열을 이용하여 저장하는것이 포인트.그리고 set
주어진 문자열에서 필요한 자료형에 맞는 정보를 꺼내기 유용..공백과 \\n 제외하고 단어 기준 구분하기 좋다.위의 헤더파일 추가위의 두가지 방법을 이용하여 stringstream에 문장을 넣어준다.전체 단어 출력하기 (n이 string이기 때문에 string만 뽑아내게
ACAYKPCAPCAK위의 예시는 ACAK가 순서대로 겹치는 경우가 가장 긴 부분수열이다따라서 답은 42차원 dp 문제2차원 dp배열의 행, 열은 비교할 두 문자열의 알파벳이 각각 해당하게 된다.위치가 dpi라 가정할 때, 이 칸은 첫번째 문자열 i까지와 두번째 문자열
1부터 9까지 쓰여진 보드왼쪽 위부터 출발왼 오 위 아래 중 한 방향으로 쓰여있는 만큼 이동구멍에 빠지거나 바깥으로 나가면 게임오버최대 동전을 움직일 수 있는 수를 구하는 문제 (무한번이면 -1)dfs를 이용한 탐색으로 해결map : 문제 입력 보드 수 visit :
1\*3 통나무를 목적지까지 옮기는 문제업로드중..조건통나무는 1 \* 3 모양임한번의 움직임으로 상, 하, 좌, 우, 돌리기 가능돌리기를 시도할 때 무조건 주변의 3\*3 칸이 비워져 있어야 함ex) \*\*\* BBB 돌리기 가능 \*\*\* \*\*\* B
문제 설명 간단한 설명 문자열 맨 처음 알파벳부터 인덱스를 1,2,3...이라 매겼을 때 각 알파벳이 맨 처음 등장한 인덱스만큼 문자열에서 그 문자가 등장하는 것을 Ideal String이라 함 ex) BAOOOA는 Ideal String이다 B는 맨 처음 등장
간선의 길이가 다른 트리가 있다고 가정할 때 두 리프노드를 선택해서 쭉 늘렸을 때 최대 길이를 구하는 문제루트노드는 무조건 1이다간선에 가중치가 다르기 때문에 1을 지나 가장 많은 노드를 통과한다고 해서 가장 긴 지름을 가진다고 할 수는 없다(위의 그림과 같이 중간의
상하좌우로 이동이 가능한 배열이 있다왼쪽 상단에서 시작하여 오른쪽 하단까지 오면서 몇개의 수를 거쳐 오게 됨.이들중 최댓값과 최솟값의 차이가 가장 작아지는 경우를 구한다.예시)위의 경로로 이동한다면 최댓값이 2, 최솟값이 0으로 둘의 차가 2이므로 (최대 - 최소) 가
다리를 연결해서 모든 섬을 연결하는 문제 다리 길이가 최소가 되야함 한 다리의 길이는 최소 2 최소 스패닝 트리 노드 전부를 연결하는 최소 연결 트리 한마디로 노드가 n개이면 최소 스패닝 트리의 엣지는 n-1개이다 MST (Minimum Spanning Tr
수의 배열이 주어진다각 수마다 그 수를 이진수로 표현하여 트리로 만들 수 있는지 판단하여 가능하다면 1, 불가능하다면 0을 저장한다이진 트리를 수로 표현하는 방법이진트리에 더미노드를 추가하여 포화 이진트리로 만듦이진트리더미 노드를 추가한 이진트리위의 더미노드를 추가한
문제 미로 (x,y) 에서 시작하여 (r,c)로 이동해서 탈출해야 한다 대신 총 이동거리가 k이여야 함 (시작좌표, 끝좌표 포함해서 같은 격자 밟아도 됨) 미로 탈출 경로를 문자열로 나타냈을 때 문자열이 사전순으로 가장 빠른 경로로 탈출해야 함 이동경로는 l,r,u,d
오늘의 날짜 today (xxxx.xx.xx)약관 종류 (A 00)수집된 정보 (xxxx.xx.xx A)stoi 와 substr 함수를 사용해서 날짜 각 부분 분리해서 수로 저장,주의할 점날짜에서 약관 달수를 더할 때 위와 같은 코드를 사용할 시 틀림약정 개월을 더했을
순서가 정해져 있는 작업을 차례로 수행해야 할 때 사용하는 순서 결정 알고리즘!그래프에 사이클이 존재한다면.. 위상정렬 수행이 불가능함..(순서 정하는 것 자체가 불가능하기 때문!)위의 그림과 같이 한가지 흐름으로 정리가 가능해야 함진입 노드 수를 정리해 둠진입 노드
여러 묶음으로 주어지는 순서를 지키면서 전체 순서를 정하는 문제만약 순서가 정해지지 않는다면 0을 출력!순서가 정해지지 않을 때를 구분해야함...그래프가 순환하는지 알아보면 된다...!\-> dfs 사용하여 그래프 순환 확인 가능노드마다 방문하면서 -1로 바꾼 후 막히
특정 숫자 배열 주어지고 또다른 숫자 들어올 때,배열에서 이 수보다 큰 수중 제일 작은 수를 출력하는 문제한번 사용한 수는 다시 사용 불가능맨 처음 set을 이용하여 set 두개를 투포인터를 이용하여 정렬한 배열을 한방향 이동을 하며 각각 비교하고 사용가능할때까지 포인
보석이 일렬로 진열돼있고, 연속으로 선택한다 할 때모든 종류의 보석을 포함하는 가장 짧은 구간을 찾는 문제진열대가 위와 같다면 3467을 선택하면 모든 종류의 보석을 선택하게 되고, 연속 선택해야 하므로 답은 3 7이 된다투포인터로 탐색하면서 map stl에 보석을 넣
string::npos는 상수 -1과 똑같음substr은 인자 하나만 주면 인자부터 마지막까지 리턴,인자 두개주면 처음 인자부터 마지막 인자 전까지 리턴
https://www.acmicpc.net/problem/23239당근밭에 직사각형 마구간이 있고, 왼쪽 아래 모서리에 말이 묶여있다오른쪽 그림과 같이 말은 마구간을 가로지를 수 없고 줄의 길이를 반지름으로 하여 움직일 수 있다고 할 때 최대로 먹을 수 있는
https://www.acmicpc.net/problem/20047동전 두 종류가 있을 때 임의의 동전 배열이 주어지고 ex) oxoxoooxxoxo선택하는 두 동전의 위치가 주어질 때이 동전을 순서를 바꾸지 않고 끼워넣어 주어지는 다른 배열을 만들 수 있는지
https://www.acmicpc.net/problem/17528완료해야 하는 작업 리스트가 있고, 두대의 머신 A,B가 있다머신은 작업마다 걸리는 시간이 다르고 한 작업을 완료하기 전까지 다른 작업을 그 머신에서 수행할 수 없음..모든 작업을 완료하기 위해
https://swexpertacademy.com/main/code/problem/problemDetail.doM 길이를 가지는 N개의 문자열 주어짐문자열 몇개를 골라서 적당히 재배열하여 (문자열 자체 재배열 불가) 가장 긴 팰린드롬 구하기 팰린드롬 역순으로