본문 바로가기

Algorithm159

#9461 파도반 수열 # 문제 # 입력 및 출력 # 풀이 처음에 문제를 볼땐 규칙을 찾을수 있을듯 말듯해서 계속 그려보는 식으로 해봤다 그러다 보니까 i 번째는 i-1 번째의 삼각형 변의 길이와 i-5 번째의 삼각형 변의 길이를 더하면 나온다는 것을 알게 됐다 규칙만 찾으면 코드 자체는 간단함 #include using namespace std; long long dp[101]; int main() { int t, n; cin >> t; dp[1] = 1, dp[2] = 1, dp[3] = 1, dp[4] = 2, dp[5] = 2; while (t--) { cin >> n; for (int i = 6; i 2022. 5. 26.
#2579 계단 오르기 # 문제 # 입력 및 출력 # 풀이 처음에 생각했던 내용은 맨마지막 계단은 무조건 선택해야하니까 뒤에서부터 계단 선택 여부를 결정하는 방식으로 해결하려고 했는데 계단 선택 조건이 두개나 있어서 너무 복잡해지더라,, 그래서 결국 구글링ㅋㅋ,,, dp배열과 계단 배열을 하나씩 만들어줌 1) 계단이 1개일땐 무조건 선택해야하므로 계단배열의 1인덱스값을 그대로 dp배열에 넣어주면 됨 2) 계단이 2개일땐 계단 두개를 모두 선택하는게 최대값이 됨 -> 이 값을 dp 배열에 넣어주기 3) 계단이 3개일땐 계단 1, 계단 3 / 계단 2, 계단 3 둘 중의 최대값을 dp배열에 넣어주면 됨 4) 계단이 3이상일땐 두가지 경우가 있음 a) n-1 계단을 선택하는 경우 n 계단 점수 + n-1 계단 점수 + n-3 계단까.. 2022. 5. 25.
#4949 균형잡힌 세상 # 문제 # 입력 및 출력 # 풀이 잠오는데 이거 푼다고 진짜 힘들었다 잠와서 그런지 제대로 확인도 못하겠고ㅋㅋㅋ 이상한 실수로 시간 엄청 잡아먹었네;; #include #include #include using namespace std; stack s; int main() { string str; while (1) { getline(cin, str); if (str == ".") break; for (int i = 0; i < str.size(); i++) { if (str[i] == '(') s.push('('); if (str[i] == '[') s.push('['); if (str[i] == ')') { if (!s.empty() && s.top() == '(') s.pop(); // 이부분 } .. 2022. 5. 24.
#1931 회의실 배정 # 문제 # 입력 및 출력 # 풀이 잘 모르겠어서 미뤄뒀다가 해결했다ㅋㅋ 일단 처음엔 회의 시간이 짧은 순으로 정렬해야한다고 생각해서 int쌍으로 벡터 만들어서 입력값 저장한다음 정렬해서 계산했음 근데 이렇게 하니까 회의실이 빈 시간을 찾기가 너무 어려워지더라 그래서 시작시간 순으로 정렬하고 시작시간이 같으면 끝나는 시간이 작은 순서대로 정렬해야하나 싶었는데 이것도 마찬가지로 0 6 때문에 안되는 가정이었음 정렬하면 0 6이 가장 처음으로 오게 되는데 회의시간이 길기 때문에 이렇게 되면 최대 회의 개수를 구할 수가 없음 입력순서대로 보면 1 4 선택하고 이시간과 겹치지 않는 시간인 5 7 선택하고 또 이시간과 겹치지 않는 8 11 선택하고 또 이시간과 겹치지 않는 12 14를 선택하면 힌트와 일치하게 됨.. 2022. 5. 23.
#11729 하노이 탑 이동 순서 # 문제 # 입력 및 출력 # 풀이 https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=2gumin14&logNo=221060149259 하노이의 탑과 점화식 안녕하세요. 이번에는 하노이의 탑이라는 것에 대한 이야기를 해 보도록 하겠습니다. 제가 예전에 포스팅한... blog.naver.com 최소 이동횟수 점화식은 위의 블로그를 보면 잘 정리되어있음 하노이탑 원리는 아래 블로그를 보면 정확하게 이해됨 https://shoark7.github.io/programming/algorithm/tower-of-hanoi '하노이의 탑' 이해하기 '하노이의 탑' 문제를 이해하고 문제 해결을 위한 핵심 통찰을 살핀 뒤 코드로 작성합니다. 이후 탑의 개수.. 2022. 5. 21.
# 11478 서로 다른 부분 문자열의 개수 # 문제 # 입력 및 출력 # 풀이 저번처럼 map을 사용해서 풀었음 문자열을 자르는 함수는 substr함수를 사용했음 https://modoocode.com/235 C++ 레퍼런스 - string 의 substr 함수 modoocode.com substr함수는 인자값으로 pos, count를 받는데 문자열에서 pos부터 pos+count까지의 문자열을 반환해줌 pos+count가 문자열의 실제 길이보다 길다면 그 이상을 반환하지 않고 문자열의 끝까지만 리턴함 #include #include #include using namespace std; map m; int main() { string s; cin >> s; for (int i = 1; i set의 사용법 -> set의 생성자와 연산자 -> set.. 2022. 5. 21.