목록코딩테스트/백준 (57)
Deff_Dev

문제 풀이이 문제는 에디터에 입력된 문자열과 명령어들을 토대로 최종 문자열을 출력하는 문제이다. List를 이용하여 해당 문제를 풀이했다. 입력된 문자열을 Char 형식의 List에 저장하고 cursor를 List의 마지막 위치로 저장한다.이후, 명령어를 입력하고, 입력된 명령어에 따라 명령을 수행한다. else if (c == 'B'){ if (cursor != editor.begin()) { cursor--; cursor = editor.erase(cursor); }} 여기서 문자를 삭제할 때, cursor에 erase 반복자를 저장하는 이유 ?cursor 위치의 값을 삭제한다면 cursor는 유효하지 않은 노드를 가르키고 있기 때문에 삭제된 요소 다음 위치를 가리키는 새로운 반복자를 저장해야한다..

문제입력된 문자열을 토대로 비밀번호를 출력하는 문제이다. 입력에는 3가지의 규칙이 존재한다.' ' > ' 은 커서 오른쪽 이동' - ' 은 커서 바로 앞 문자 지우기풀이vector를 이용하여 해당 문제를 풀이했지만 시간 초과가 났다.더보기#include #include #include using namespace std;int cursor = 0;void GetPassword(string input) { int length = input.length(), cursor = 0, n= 0; vector password; for (int i = 0; i ') { int l = password.size(); cursor = min(cursor + 1, l); } else if (c == '-') { ..

문제https://www.acmicpc.net/problem/13300문제 설명정보 초등학교에서는 단체로 2박 3일 수학여행을 가기로 했다. 여러 학년이 같은 장소로 수학여행을 가려고 하는데 1학년부터 6학년까지 학생들이 묵을 방을 배정해야 한다. 남학생은 남학생끼리, 여학생은 여학생끼리 방을 배정해야 한다. 또한 한 방에는 같은 학년의 학생들을 배정해야 한다. 물론 한 방에 한 명만 배정하는 것도 가능하다.한 방에 배정할 수 있는 최대 인원 수 K가 주어졌을 때, 조건에 맞게 모든 학생을 배정하기 위해 필요한 방의 최소 개수를 구하는 프로그램을 작성하시오.예를 들어, 수학여행을 가는 학생이 다음과 같고 K = 2일 때 12개의 방이 필요하다. 왜냐하면 3학년 남학생을 배정하기 위해 방 두 개가 필요하고..

문제https://www.acmicpc.net/problem/3273 문제 설명n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i 입력첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는 x가 주어진다. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000)출력문제의 조건을 만족하는 쌍의 개수를 출력한다.풀이이 문제는 입력된 n개의 숫자들 중 두 수의 합이 x가 될 수 있는 모든 경우의 수를 구하는 문제이다. O(n^2)으로 풀이하게 되면 시간 초과가 나오기 때문에 더 효율적인 방법으로 풀..

https://www.acmicpc.net/problem/1475 문제 설명다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)입력첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.출력첫째 줄에 필요한 세트의 개수를 출력한다. 풀이입력된 roomNumber를 string으로 변환하여, 해당 문제를 풀이했다. 입력된 roomNumber의 각 번호 갯..

문제제https://www.acmicpc.net/problem/11726풀이점화식- dp[i] = dp[i - 1] + dp[i - 2]#include using namespace std;int dp[1001] = { 0, };int main() { int n; cin >> n; dp[1] = 1; dp[2] = 2; for (int i = 3; i

문제https://www.acmicpc.net/problem/14501풀이이 문제는 다이나믹 프로그래밍 문제이다. n부터 시작하여 각 상담에 대한 최댓값을 구하는 방법을 사용했다. dp[i] = max (dp[i + 1], dp[ t[i] + i] + v[i]] 여기서 상담을 할 수 없는 날이라면, dp[i + 1] 값을 저장한다.#include #include #include using namespace std;int dp[17] = { 0, };int main() { int n; cin >> n; vector t(n + 1); vector v(n + 1); for (int i = 1; i > t[i] >> v[i]; } for (int i = n; i >= 1; ..

문제https://www.acmicpc.net/problem/11053풀이이 문제는 다이나믹 프로그래밍 문제이다. 점화식 dp[i] = max(dp[j] + 1, dp[i]) 여기서 모든 요소들은 자기 자신을 수열에 포함하므로 초기 값을 1 설정한다.#include #include using namespace std;int dp[1001] = { 0, };int main() { int n; cin >> n; vector vec(n + 1); for (int i = 1; i > vec[i]; dp[i] = 1; } int maxCount = 1; for (int i = 2; i = 1; j--) { if (vec[j]