코딩테스트/Baekjoon 59

[백준 #10809] 알파벳 찾기 (C++)

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 이 문제는 find와 아스키코드를 사용하여 풀었다. 알파벳 소문자로만 이루어져 있고, 소문자는 아스키코드로 97~122까지이기 때문에 for 문을 사용하여 97부터 122까지 숫자를 char로 바꾼 후 find를 사용하여 해당 위치를 찾고 그 값을 int로 변환하여 출력했다. #include using namespace std; int main() { ios::sync_with_std..

[백준 #1152] 단어의 개수 (C++)

https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net getline을 사용하여 공백이 포함된 문자열을 입력받고 그 문자열을 공백 기준으로 나누기 위해 stringstream을 사용해서 문제를 풀었다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); string s; getline(cin, s); strings..

[백준 #1931] 회의실 배정 (C++)

https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 이 문제는 vector pair와 sort를 사용하여 회의가 끝나는 시간을 오름차순으로 정렬했다. 그리고 회의가 끝나는 시간을 기준으로 회의 시작 시각과 비교하여 조건문을 작성하였다. #include #include #include using namespace std; bool cmp(pair a, pair b) { if (a.second == b.second) return a.first < b.first; return a.second < b.second; } int main() { ios::sync_with_s..

[백준 #9655] 돌 게임 (C++)

https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 규칙을 알기 위해 돌이 1개일 때부터 몇 개를 해보면 돌이 1개일 때 -> SK 돌이 2개일 때 -> CY 돌이 3개일 때 -> SK 돌이 4개일 때 -> CY 돌이 5개일 때 -> SK가 나온다. 따라서 돌의 개수가 홀수일 때는 상근이가 이기고, 짝수일 때는 창영이가 이긴다는 것을 알 수 있다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; if (n % 2) { cout

[백준 #2193] 이친수 (C++)

https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 이 문제는 다이나믹 프로그래밍을 사용해 풀었다. n이 1일 경우 한자리 이친수의 개수 = 1 (1) n이 2일 경우 두 자리 이친수의 개수 = 1 (10) n이 3일 경우 세 자리 이친수의 개수 = 2 (100, 101) n이 4일 경우 네 자리 이친수의 개수 = 3 (1000, 1001, 1010) n이 5일 경우 다섯 자리 이친수의 개수 = 5 (10000, 10001, 10010,..

[백준 #2217] 로프 (C++)

https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 이 문제는 최대 중량을 구하는 방법을 아는 게 관건인 것 같다. 최대 하중이 제일 작은 밧줄의 값 * 밧줄의 개수를 통해 최대 중량을 찾아야 한다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, ans = 0; cin >> n; vect..

[백준 #1037] 약수 (C++)

https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 입력값으로 1과 자기 자신을 받지 않기 때문에 약수에서 최솟값과 최댓값을 곱해주면 된다. 입력받은 약수를 벡터에 집어넣고 정렬한 후 벡터의 맨 앞 값과 맨 마지막 값을 곱해주었다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, num; i..

[백준 #7662] 이중 우선순위 큐 (C++)

https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 처음에 이중 우선순위 큐라는 제목을 보고 priority_queue를 사용해 코드를 짜느라 많은 시간을 소비했다. 우선순위 큐보다는 multiset을 사용하면 더 간단하게 풀 수 있는 것 같다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int t, k, n; cha..

[백준 #7568] 덩치 (C++)

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 이 문제는 벡터와 이중 for문을 사용하여 풀었다. vector v를 활용하여 키와 몸무게를 한 쌍으로 입력하여 벡터에 넣은 후 이중 for문으로 v.first와 v.second 값을 비교했다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, h, w..

[백준 #1920] 수 찾기 (C++)

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이 문제는 벡터와 이진 탐색을 사용해 풀었다. 헤더파일에 binary_search STL이 정의되어 있기 때문에 이것을 사용하면 쉽게 풀 수 있다. n개의 정수를 벡터에 저장하고 이진 탐색을 위해 정렬한 후, m개의 정수를 입력하면서 이진 탐색을 하여 그 정수가 벡터에 존재하는지 알아내는 것이다. #include #include #include us..