210122 | 백준 그리디 알고리즘 1541, 11399 | C++

박나연·2021년 1월 22일
0

하루백준

목록 보기
14/20
post-custom-banner

1541

1541번 : 잃어버린 괄호

🎈 해결방법

stoi(const string& str)
string을 int 타입으로 바꿔주는 함수, & (reference)를 이용해서 string을 넘겨주며,
else temp += str[i];
현재 인덱스 string이 연산자가 아닐때 (else) temp에 현재 string을 추가하여
if (str[i] == '-' || str[i] == '+' || str[i] == '\0')
연산자가 나오면
if (minus)
result에 전에 나왔던 연산자가 minus인지를 확인한 후
if (minus) result -= stoi(temp);
else result += stoi(temp);
경우에 따라 -혹은 +계산을 해준다!
if (str[i] == '-') minus = 1;
연산자가 -일때는 minus bool을 true로 만들어준 상태

#include <iostream>
#include <string>
using namespace std;

int main() {
	string str;
	cin >> str;
	string temp = "";

	bool minus = false;
	int result = 0;

	for (int i = 0; i <= str.length(); i++) {
		if (str[i] == '-' || str[i] == '+' || str[i] == '\0') {
			if (minus)
				result -= stoi(temp);
			else
				result += stoi(temp);
			temp = "";
			if (str[i] == '-')
				minus = 1;
		}
		else
			temp += str[i];
	}
	cout << result;
}

11399

11399번 : ATM

🎈 해결방법

이 문제의 해결법은 입력받은 시간들을 오름차순으로 정렬한 후, 정렬된 사람 번호의 순서대로 입력된 시간들을 적용하면 가장 최소의 시간이 도출되게 된다.

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int N;
	cin >> N;

	int p[1000];
	for (int i = 0; i < N; i++)
		cin >> p[i];

	sort(p, p + N);

	int result = 0;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j <= i; j++) {
			result += p[j];
		}
	}
	cout << result;

}

profile
Data Science / Computer Vision
post-custom-banner

0개의 댓글