본문 바로가기

CS/알고리즘7

[C++] 코딩 테스트 대비용 C++ 문법 정리 #include using namespace std;  문자열 출력std::coutstd::printf 줄 바꿈std::endl 문자열 출력std::scanfstd::cinㄴ 공백 미포함getlineㄴ 공백 포함cin.getline(char배열 이름, 배열크기, 구분문자);  문자열 자르기strtok(자를 문자열, 기준 문자)string엔 사용 불가능 > char*로 변환해줘야함. 포인터&, *로 표현int *p는 주소를 나타내는 변수이다.int n[3] 배열이 있을 때,n은 n[0]의 주소, n+1은 n[1]의 주소, n+2은 n[2]의 주소를 의미한다.그렇기에 *n, *(n+1), *(n+2) 은 각 칸의 값을 의미한다.포인터에 주소를 넣을 땐 &를 사용해야함. p = &변수 문자열 타입 변환atoi.. 2025. 1. 15.
백준 9251번 : LCS[java] 1. 첫 번째 문자열(s1)과 두 번째 문자열(s2)를 입력받는다. 2. dp에 사용할 배열 dp[1001][1001]을 만든다. ㄴ dp[i][j]는 s1의 i번째와 s2의 j번째 문자까지 비교했을 때 최장 공통 부분수열이다. 3. s1의 i번째 문자와 s2의 j번째 문자를 비교하고 같다면 dp[i][j] = dp[i-1][j-1] +1 이고, → s1의 i번째 문자와 s2의 j번째 문자를 이번 dp[i][j]에서 공통 문자로 사용했기 때문에 직전까지의 최댓값에 +1을 한다. 4. s1의 i번째 문자와 s2의 j번째 문자를 비교하고 다르다면 dp[i][j] = max(dp[i-1][j] , dp[i][j-1]) 이다. → i번째 문자와 j번째 문자가 다르기 때문에 직전 문자열에 각각 추가하여 비교한 최.. 2023. 2. 22.
백준 17136번 : 색종이 붙이기[java] 1. (0,0)부터 (9,9)까지 탐색을 진행합니다. 2. 탐색중 "1"을 만나면 사용가능한 가장 큰 색종이를 사용합니다. - 사용 가능한 색종이가 없는 경우 - (9,9)에 도달한 경우 - 현재 사용한 색종이의 수가 최솟값보다 커진 경우 ▶ 이 3가지 경우에는 직전의 "1"로 돌아가 이전에 붙였던 색종이를 때고 한 단계 작은 색종이를 붙이고 탐색을 재개합니다. 3. (9,9)에 도달한 경우에는 사용한 색종이의 최솟값을 갱신합니다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; public class Main{ static int[][].. 2023. 2. 21.
백준 11437번 : LCA[java] 1. 각 노드에 인접한 모든 노드를 저장한다(edge) 2. edge를 바탕으로 각 노드들의 높이와 부모노드를 구한다. 3. 입력받은 n1과 n2중 더 깊은 노드를 위로 올리면서 같은 높이로 맞춘다. 4. 두 노드에서 한 칸씩 위로 올라가며 비교하는 것을 공통 조상이 나올 때 까지 반복한다. import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.ArrayList; public class Main{ static ArrayList edge = new ArrayList(); static int[] parents; // parents[i] = i의 부모 static in.. 2023. 2. 15.
반응형