전체 글 204

[백준 #1010] 다리 놓기 (C++)

https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 강의 서쪽에는 n개의 사이트, 동쪽에는 m개의 사이트가 있고 이를 연결한 다리를 최대한 많이 짓기 위해 n개의 다리를 지으려고 할 때의 경우의 수를 구하는 문제이다. m개 중에서 순서에 상관없이 n개를 선택하는 것이기 때문에 조합을 사용하여 문제를 풀었다. n, m 순서로 입력받지만 m개 중에서 n개를 선택하는 것이므로 mCn = m-1Cn-1 + m-1Cn로 문제를 풀어야 한다. #include..

정수 내림차순으로 배치하기 (C++)

https://programmers.co.kr/learn/courses/30/lessons/12933 코딩테스트 연습 - 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이 programmers.co.kr #include #include #include using namespace std; bool cmp(int i, int j) { return j < i; } long long solution(long long n) { long long answer = 0; vector v; while (n != 0) { int ..

[백준 #2675] 문자열 반복 (C++)

https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 입력받은 문자열을 문자 배열로 만든 후 이중 for 문을 사용하여 문자 하나 당 r번씩 출력되게 했다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int t, r; string s; cin >> t; for (int i = 0; i > r >> s..

[백준 #2908] 상수 (C++)

https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 입력받은 숫자를 뒤집기 위해 to_string 함수를 사용하여 문자열로 변환 후 reverse 해주었다. 그리고 뒤집은 문자열을 다시 정수로 변환하기 위해 atoi 함수를 사용하였다. 그 후 두 개의 수 중 더 큰 값을 출력하기 위해 max를 사용했다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false)..

[백준 #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,..