본문 바로가기

전체 글

(196)
[C++] 백준 9946번 - 단어 퍼즐 문제 9946번https://www.acmicpc.net/problem/9946 케이스마다 번호를 붙여야하기 때문에 count에 0을 넣고 ++를 앞에 붙여 처음 반복문을 돌릴 때 값이 1이 되도록 만든다.만약 입력받은 두 값이 END면 반복문을 빠져나와주고, 아니라면 해당 값들을 정렬한다. 정렬한 두 값이 같으면 same을, 아니면 different를 출력한다. #include #include #include using namespace std;int main(){ int count = 0; while(++count){ string a, b; cin >> a >> b; if(a == "END" && b == "END"){ break; ..
[C++] 백준 10610번 - 30 문제 10610번https://www.acmicpc.net/problem/10610 30의 배수가 되려면 3의 배수 + 10의 배수여야 한다. 각 자리를 다 더해 3으로 나눠 떨어지면 3의 배수이고 맨 마지막 자리가 0이면 10의 배수이다.그래서 숫자의 개수를 알아내기 위해 문자열로 받아 해당 값들에 '0'을 빼 int형으로 만든 후 벡터에 넣어준다. 가장 큰 수를 만들어야하기 때문에 내림차순으로 정렬하고 check변수를 이용하여 30의 배수인지 알아낸다. check변수에 각 숫자들을 다 더해 나온 값이 3의 배수이거나 10의 배수이면 -1을 출력하고, 아니면 30의 배수라는 뜻이기 때문에 벡터에 들어있는 값을 출력한다. #include #include #include #include using name..
[C++] 백준 2075번 - N번째 큰 수 문제 2075번https://www.acmicpc.net/problem/2075 n*n의 표에 수 n*n개가 채워져 있기 때문에 num에 해당 수만큼 넣어주고 오름차순으로 정렬했다. 그리고 n번째 큰 수를 출력해야 하기 때문에 전체 수(N=n*n)에서 n을 빼준 인덱스에 있는 값을 출력해준다. #include #include using namespace std;int num[2250000];int n, N;int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; N = n * n; for (int i = 0; i > num[i]; } sort(num, num+N); cout
[C++] 백준 11651번 - 좌표 정렬하기 2 문제 11651번https://www.acmicpc.net/problem/11651 이번에는 어제에 이어 좌표 정렬하기 2번째 문제이다. 어제와는 반대로 y좌표가 증가하는 순으로 하고, 만약 y좌표가 같으면 x좌표가 증가하느 순서로 정렬하는 문제이기 때문에 sort의 compare함수를 이용하여 y좌표가 같으면 x가 작은 것부터, 다르면 y가 작은 것부터 정렬한다. #include #include #include using namespace std;int N, x, y;vector > v;bool compare(paira, pairb) { if (a.second == b.second) { return a.first > N; for (int i = 0; i > x >> y; v.push_back(mak..
[C++] 백준 11650번 - 좌표 정렬하기 문제 11650번https://www.acmicpc.net/problem/11650  sort를 하면 벡터의 첫번째를 기준으로 정렬한다. 만약 첫번째가 같으면 두번째를 기준으로 정렬하기 때문에 이를 사용하면 될 것 같다. #include #include #include using namespace std;int main() { vector > v; int N, x, y; cin >> N; for (int i = 0; i > x >> y; v.push_back(make_pair(x, y)); } sort(v.begin(), v.end()); for (int i = 0; i
[C++] 백준 10824번 - 네 수 어제는 시골에 갔는데 깜빡하고 노트북을 가지고 가지 않아서 못 풀었다...사실 월요일에 집에 돌아올줄 알았는데 오늘 돌아오게 되어 오늘은 풀 수 있게 되었다. 그럼 바로 고~~  문제 10824번https://www.acmicpc.net/problem/10824  숫자를 문자열로 받아 서로 합치고, 합친 각 문자열을 숫자로 바꿔 더해주면 되는 문제이다.그런데 나는 int로 해서 런타임 에러(out_of_range)가 났다... long long으로 해줘야한다... #include #include using namespace std;int main() { int A, B, C, D; cin >> A >> B >> C >> D; string AB = to_string(A) + to_string(B); str..
[C++] 백준 2631번 - 줄세우기 오늘 열받는 일이 있어서 문제에 집중을 못했다...그래도 오늘이 마지막이니까 ㅎㅎ내일부터는 다시 자유다... 힘들게 일했더니 너무 피곤해서 이 문제는 다음에 다시 봐야겠다...  문제 2631번https://www.acmicpc.net/problem/2631  다이나믹 프로그래밍 배치하는 문제를 만나면 가장 중요한 포인트는 기준을 잡기 -> 오름차순으로 정렬하라고 했으니 오름차순으로 가장 길게 정렬된 부분을 기준 LIS(최장 부분 증가수열): 앞에서부터 뒤로, 각각의 값이 이전 값보다 크고 가장 긴 부분 수열을 뜻함 #include #include using namespace std;int main() { int N = 0, result = 0; scanf("%d", &N); int child[201],..
[C++] 백준 2792번 - 보석 상자 문제 2792번https://www.acmicpc.net/problem/2792  색상의 수만큼 보석들(입력값)을 벡터에 넣어준다. 이때 이분탐색을 할 때 필요한 right에 넣을 최대값을 구해준다(가장 개수가 많은 색의 보석). 왜냐하면 보석이 가장 많을 때가 질투심이 최대일 때이니까... (left에는 1을 넣어주면 됨) left와 right의 중간값 mid를 기준으로 입력받은 각 색상의 보석을 나눠준다. 그렇게 나오는 몫이 나눠줄 수 있는 학생의 수이기에 count에 더해주고 나머지가 0이 아닐 경우 더 나눠줄 수 있으니까 count를 1증가시켜준다(if문의 조건에 0이 들어가면 false니까 실행이 안 됨). 최종으로 나온 count값이 학생수 N명보다 작거나 같으면 true를 반환해준다. tru..