목록분류 전체보기 (259)
Deff_Dev
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 입력된 문자열을 숫자로 변환하여 반환하는 문제이다. char 아스키 코드 비교(48 ~ 57)를 이용해 숫자를 판별하고, 각각의 숫자 영단어에 따른 숫자 문자 반환 함수를 만들어 풀이했다. 문제를 다 푼뒤, 숫자 문자 판별할 때, isdigit를 사용하면 쉽게 판단할 수 있다는 걸 알게되었다.#include #include using namespace std;char GetNum(string s){ char c; if(s == "zero"){ c = '0'; } else if(s == "one"){..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이일부 학생들이 체육복을 도난당함 (lost).일부 학생들은 여벌의 체육복을 가져옴 (reserve).체육복은 바로 앞번호나 뒷번호의 학생에게만 빌려줄 수 있음여벌 체육복이 있는 학생도 도난당했을 수 있으며, 이 경우 다른 학생에게 빌려줄 수 없음체육수업에 참여할 수 있는 학생 수를 최대화하는 것이 목표함수는 체육수업에 참여할 수 있는 최대 학생 수를 반환어렵지 않은 문제지만, 여벌 체육복을 가져온 학생도 도난당할 수 있다는 점을 잘 생각해야한다. 그리고 lost 벡터가 정렬되지 않을 경우를 생각하여 오름차순 정렬한 후, 탐색을 시작했다.#includ..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 참가자(participant) 중 완주(completion)하지 못한 한 사람을 찾는 문제이다. unordered_map을 사용하여 완주한 사람의 수를 저장한다.이후, 참가자들을 탐색하여, unordered_map의 값이 0인 사람을 찾은 뒤 return한다.#include #include #include using namespace std;unordered_map completionMap;string solution(vector participant, vector completion) { string answer = ""; ..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이맵을 이용하여 풀이했다. 처음 탐색한 알파벳이라면 answer에 -1 저장 후, i + 1 값 설정이미 탐색한 알파벳이라면 얼마나 가까운지 구하고, 해당 위치 + 1 저장 여기서 i + 1을 한 이유 맵의 기본값이 0이기 때문에 i로 저장하게 된다면, i가 0일 때 -1이 중복으로 들어가는 경우가 생겨서 + 1을 저장#include #include #include using namespace std;map word;vector solution(string s) { vector answer; for(int i = 0; i
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 물류 센터의 로봇 자동 운송 시스템을 시뮬레이션하는 문제이다.물류 센터에는 2차원 좌표로 표현되는 n개의 포인트가 있다.x대의 로봇이 있으며, 각 로봇은 정해진 경로를 따라 포인트를 순서대로 방문한다.모든 로봇은 동시에 출발하며, 1초에 한 칸씩 이동한다. 이동 시 최단 경로를 선택한다.로봇은 r 좌표 변화를 c 좌표 변화보다 우선시한다.두 대 이상의 로봇이 같은 좌표에 있을 때 "위험 상황"으로 간주한다.목표는 모든 로봇이 운송을 마칠 때까지 발생하는 총 위험 상황의 횟수를 계산하는 것이다.입력으로는 포인트의 좌표(points)와 각 로..
문제제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]