본문 바로가기

CodingTest

(33)
[BOJ 20001] 백준 고무오리 디버깅 풀이 - C++ 사용언어 : C++ 문제풀이 * stack 이용하기! (1) 문자열을 입력받을 땐 getline을 사용한다 ("고무오리 디버깅 끝", "고무오리 디버깅 시작"은 공백을 포함하기 때문) (2) "문제" : stack push 한번. "고무오리" : stack pop 한번 (스택이 비어있으면 push 두번) 전체코드 #include using namespace std; #include #include string str; stack s; int main() { getline(cin, str); while (str!="고무오리 디버깅 끝") { getline(cin, str); if (str == "문제") s.push(1); else if (str == "고무오리") if (s.empty()) { s.pus..
[BOJ 1699] 백준 제곱수의 합 풀이 - C++ 사용언어 : C++ 문제풀이 * dynamic programming 이용하기 자세한 풀이 : https://developing-soosoo.tistory.com/32 [BOJ 17626] 백준 Four Squares 풀이 - C++ 사용언어 : C++ 문제풀이 * dynamic programming 이용하기 * int형 배열인 arr에 값 저장 * 순차적으로 접근 ex) arr[26] arr[1]+arr[25], arr[4]+arr[22], arr[9]+arr[15], arr[16]+arr[10], arr[25]+arr[1.. developing-soosoo.tistory.com 전체코드 #include #include using namespace std; int N; int arr[100001]; in..
[BOJ 17626] 백준 Four Squares 풀이 - C++ 사용언어 : C++ 문제풀이 * dynamic programming 이용하기 * int형 배열인 arr에 값 저장 * 순차적으로 접근 ex) arr[26] arr[1]+arr[25], arr[4]+arr[22], arr[9]+arr[15], arr[16]+arr[10], arr[25]+arr[1] 이 중에서 최솟값이 답이 된다 여기서 arr[1],arr[4]... 즉, arr[i*i] 꼴은 항상 답은 1이다 (제곱수) 따라서, arr[26-i*i] 중에서 가장 작은 값을 가진 배열이 답이 된다 전체코드 #include using namespace std; #include #define INT_MAX 50005 int n; int arr[50000]; int main() { ios::sync_with_st..
[BOJ 17219] 백준 비밀번호 찾기 풀이 - C++ 사용언어 : C++ 문제풀이 * key,value 모두 string인 unordered_map을 이용해 key엔 사이트 주소, value엔 비밀번호를 저장했다. (1) address,password 입력받아 map에 대입하기 unordered_map m; //string은 공백을 기준으로 값을 받는다 cin >> N >> M; for (int i = 0; i > address >> pwd; m[address] = pwd; //index를 이용해 저장 } (2) 찾고자 하는 address를 입력받아 map[address]값 출력하기 for (int i = 0; i > address; cout > M; for (int i = 0; i < N; i+..
[BOJ 17608] 백준 막대기 풀이 - C++ 사용언어 : C++ 문제풀이 * 스택 이용! (1) 입력 값들을 순서대로 스택에 저장 stack stck; cin >> N; for (int i = 0; i > tmp; stck.push(tmp); } (2) 스택 순서대로 현재 최대 높이와 비교한다 (현재 높이보다 크면 answer값 +1 해주고, 최대높이(cnt)값도 업데이트 해준다) (그렇지 않으면 스택 pop만 해준다) int cnt = 0; //현재 최대 높이 while (!stck.empty()) { if (stck.top() > cnt) { answer++; cnt = stck.top(); } stck.pop(); } 전체코드 #include using namespace std; #include int N; in..
[BOJ 1874] 백준 스택 수열 풀이 - C++ 사용언어 : C++ 문제풀이 - 배열에 우선 입력값을 저장한다 - stack을 이용해 배열과 동일한 수열을 만들 수 있는지 판별한다 -(+,-는 vector값에 차례로 대입 : push할 땐 +, pop할 땐 -) - 마지막까지 stack에 값이 남아있으면 수열을 만들 수 없음. 비어있을 땐 vector값 차례로 출력 (1) 배열에 입력 값 차례대로 대입 cin >> n; for (int i = 0; i > a[i]; (2) stack 을 이용해 판별하기 for (int i = 1; i a[i]; for (int i = 1; i
[BOJ 1541] 백준 잃어버린 괄호 풀이 - C++ 사용언어 : C++ 문제풀이 (1) 55 - 50 + 40 => 55 - (50+40) = -35 (2) 40+20 - 60+30 => 40+20 - (60+30) = -30 (3) 40-20+30+30 => 40 - (20+30+30) = -40 => '-' 빼기 연산자가 나오면 그 뒤 연산식을 괄호로 묶는다. => 즉, - 연산자가 하나라도 나오면 그 뒤의 피연산자들은 빼기 연산을 진행한다 * 변수 설정 string order; //입력 받는 식 vector operands; // 숫자 저장 string tmp; //숫자 값 임의로 저장 int plus_cnt=0; //더하기 몇 번 해야하는지 bool minus_flag = false; //- 연산자 나왔는지 (1) 연산자, 피연산자 구분하기 (피연..
[BOJ 2869] 백준 달팽이는 올라가고 싶다 풀이 - c++ 사용언어 : C++ 문제풀이 * 하루에 이동한 최종 거리 (A-B)m * x일동안 이동한 최종 거리 (A-B)*x * x일동안 이동한 거리가 Vm보다 큰 최솟값 == 도착하는 데까지 걸리는 일수 (A-B)*x >= V * 이 때, 정상에 올라간 후에는 미끄러지지 않는다. 즉, 마지막날엔 밤을 보내지 않는다 (A-B)*(x-1)+A>=V X를 기준으로 식 정리하기 X>=((V-A)/(A-B))+1 (이때 정수인 X는 계산값과 같거나 큰 정수의 최솟값이 된다. ceil 함수 이용. V,A,B는 실수형으로 적용) 전체코드 #include #include using namespace std; double A, B, V; int result; int main() { cin >> A >> B >> V; result..