[algorithm] 백준 15552번 빠른 A+B
·
algorithm/기초 코드
주어진 입력값 2개를 더해만 주면 되는 간단한 문제이지만시간초과의 중요성을 알려주는 문제이다시간초과를 막기위해선 2가지 명령을 알아야한다 우선 C++에서는 printf/scanf와 cin/cout을 혼용해서 사용하는 것이 가능하다기본적으로 printf/scanf를 담고있는 C stream과 cin/cout을 담고있는 C++ stream을 동기화하고있다그런데 cin/cout만 쓸거면 굳이 C stream을 동기화를 할 필요가 없다그래서 그 동기화를 끊어줄 때 사용하는 명령이ios::sync_with_stdio(0); 이다동기화를 끊어주고부터는 printf/scanf를 사용해선 안된다 두번째는 cin.tie(0)인데 이 명령은 cin 명령을 수행하기 전 cout의 버퍼를 비워주지 않는 명령이다기본적으로는 c..
[algorithm] 백준 10804 카드 역배치
·
algorithm/기초 코드
구간이 주어지면reverse함수를 사용하여 뒤집고 출력해주면 되는 간단한 문제이다인덱스 번호만 조금 신경써주어야 했던 문제이다#include #include using namespace std;int main() { int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int a=5,b=10; for (int tmp=0; tmp > a >> b; reverse(arr+(a-1), arr+b); } for (int c : arr) { cout reverse(start, end); reverse함수는 start부터 end-1까지의 인덱스를 뒤집기때문에 유의..
[algorithm] 백준 1267번 핸드폰 요금
·
algorithm/기초 코드
이 문제는 영식이와 민식이의 요금제 계산 공식만 세워주면간단히 해결할 수 있는 문제이다 통화시간을 x라고 하겠다영식 요금제 : 10 + (x/30) * 10민식 요금제 : 15 + (x/60) * 15 #include #include using namespace std;int main() { int a,x; int sum_y = 0, sum_m = 0; cin >> a; for (int tmp=0; tmp > x; sum_y += 10 + (x/30) * 10; sum_m += 15 + (x/60) * 15; } if (sum_y sum_m) cout
[algorithm] 백준 2309번 일곱난쟁이
·
algorithm/기초 코드
처음에는 배열의 원소를 이중 for문으로 추적하면서2가지 원소를 찍고 그 원소들을 제외한 나머지들의 합이 100이되는 경우를 찾아보려했는데도저히 구현이 안되고 코드가 복잡해졌다. 알고보니 반대로 원소들의 전체 합에서 2가지 원소를 뺀 값이 100이 되는 경우를 생각하면 되는 것이였다 #include #include #include #include using namespace std;int main() { vector vec; for (int tmp=0; tmp> value; vec.push_back(value); } int sum = accumulate(vec.begin(), vec.end()..
[algorithm] 백준 2587번 대표값2
·
algorithm/기초 코드
accumulate 함수로 배열의 합 구하고 5로 나눠서 평균을 구할 수도 있지만 sizeof 함수로 배열의 길이를 구해준 다음sum함수도 따로 구현해서 평균을 구했다 #include #include #include using namespace std;int main() { int arr[5]; for (int tmp=0; tmp> arr[tmp]; } int sum = 0; for (int x : arr) { sum += x; } int y = sizeof(arr) / sizeof(arr[0]); cout 사실 vector 쓰면 더 간단히 풀 수 있지만다른 방식으로도 해보아야 실력이 늘고문제를 바라..
[algorithm] 백준 2576번 홀수
·
algorithm/기초 코드
벡터를 선언하고입력을 받을 때 바로 홀수인지 판단하고 홀수이면 sum값에 더해주고 vector에 값 추가해주었다 홀수가 존재하는 않는 경우는 vector의 길이가 0인 경우로 처리했고최솟값은 min_element을 사용해봤는데 min_element 함수는 주소처럼 사용되는 반복자(iterator)를 반환하기에"*"를 붙여서 역참조를 해줘야 우리가 원하는 값을 얻을 수 있다 #include #include #include using namespace std;int main() { vector arr; int sum = 0; for (int tmp=0; tmp> a; if (a%2 != 0) { sum += a..
[algorithm] 백준 2490번 윷놀이
·
algorithm/기초 코드
윷을 던져 나온 정보가 0과 1로만 표시되기에각 케이스마다 합을 구해서 판단하면 될 것이라 생각했다 #include #include using namespace std;int main() { int arr[4] = {}; for (int tmp = 0; tmp > arr[0] >> arr[1] >> arr[2] >> arr[3]; int sum = accumulate(arr, arr+4, 0); if (sum == 1) cout accumulate 함수를 사용했는데첫번째 파라미터는 배열의 합을 구할 시작점두번째는 배열의 합을 구할 끝 인덱스+1세번째는 합의 초기값이다. accumulate 함수를 쓰기 위해서는#include..
[algorithm] 백준 10093번 숫자
·
algorithm/기초 코드
두 수 사이에 있는 수의 개수는 두 수를 뺀 값에 -1 을 해주면 되고두 수 사이에 있는 수는 for 문으로 a 에서 +1, +2, +3 ... 해주는 식으로 설정했다#include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); int a,b; cin >> a >> b; cout 하지만 틀렸다는 결과를 받았다 생각을 해보니 a가 b보다 작다는 말이 명시적으로 주어지지 않았다a가 b보다 큰 경우도 처리해주어야 한다 또한 for문 안에 if문이 굳이 필요가 없었다#include #include using namespace std;int main() { ios::sync_with_..
[algorithm] 백준 2480번 주사위 세개
·
algorithm/기초 코드
문제에서 나오는 경우의 수 별로 if문을 작성하면 해결할 수 있다같은 눈이 3개가 나오는 경우같은 눈이 2개만 나오는 경우모두 다른 눈이 나오는 경우 #include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); int a,b,c; cin >> a >> b >> c; if (a == b && b == c) { cout else if 부분에서 a가 어차피 공통으로 있으니까 else if (a == b || a == c) cout 이런 식으로 통합해서 해도 괜찮을 것 같다 배열과 정렬을 이용한 풀이도 있어서 소개하려고 한다// Authored by : Baaaaaaa..
[algorithm] 백준 2753번 윤년
·
algorithm/기초 코드
윤년은 4의 배수이면서 100의 배수가 아니거나 400의 배수여야하니까이중 if문을 사용해주면 되겠다고 판단했다 #include #include using namespace std;int main() { ios::sync_with_stdio(0); cin.tie(0); int year; cin >> year; if (year % 4 == 0) { if (year % 100 != 0 || year % 400 == 0) { cout 하지만 여기서 안 쪽 if문에서 else를 처리해주지 않아 오류가 발생했었다 #include #include using namespace std;int main() { ios::sync_with_..