https://www.acmicpc.net/problem/2028 2028번: 자기복제수 어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다. 예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가 www.acmicpc.net 자가복제수를 찾는 문제. 자가복제수란, 자연수 n을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 n이 나타나는 수를 의미한다. n과 n^2를 10으로 나눈 나머지를 계속 비교해가며 풀면 된다. #include int main () { int t, n, square; int flag; scanf("%d", &t); while (t--) { flag = 1; scanf("%d", &n)..
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 덩치를 구하는 문제. 자신을 제외한 모든 사람들과 비교해야 하기 때문에 브루트 포스로 접근한다. #include #include #include #include using namespace std; int main(){ int t; int height, weight; int result; vector v; cin >> t; for (int i = 0; i ..
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net https://codejin.tistory.com/128 백준 10815번 C++ 풀이 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드.. codejin.tist..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 숫자 배열을 입력받고, 그 다음 받은 숫자들이 들어있는지 판단하는 문제. 이진탐색으로 접근해야 한다. 이중 for문으로 접근하게되면 O(n^2)가 되고, 이는 시간안에 통과하지 못한다 #include #include #include using namespace std; int main () { ios_base::sync_with_stdio(false); cin.tie..
https://www.acmicpc.net/problem/3613 3613번: Java vs C++ Java 예찬론자 김동규와 C++ 옹호가 김동혁은 서로 어떤 프로그래밍 언어가 최고인지 몇 시간동안 토론을 하곤 했다. 동규는 Java가 명확하고 에러가 적은 프로그램을 만든다고 주장했고, 동혁이는 www.acmicpc.net 변수명을 받아서 C++형식의 변수면 Java형식으로, Java형식의 변수면 C++형식으로 바꿔서 출력하는 문제. 만만히 보이는 문제지만, 예외처리할게 너무 많은 문제. 남이 알려주지 않으면 예외 찾는데 엄청나게 많은 시간을 쏟을 것이다. 필자도 결국 백준 질문검색으로 들어가 무엇을 예외처리해야 하는지 알아보고 처리했다. 정리해보면 5가지의 예외가 있다. 1. 첫 문자가 '_' 이거나..
https://www.acmicpc.net/problem/9417 9417번: 최대 GCD 첫째 줄에 테스트 케이스의 개수 N (1 < N < 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 양의 정수 M (1 < M < 100)개가 주어진다. 모든 수는 -231보다 크거나 같고, 231 -1보다 작거나 www.acmicpc.net n개의 자연수를 입력받고, 두 수의 쌍중에서, 가장 큰 최대공약수를 출력하는 문제. 문자열로 받은 후에, 공백을 기준으로 문자열을 분리한 후에, 브루트포스로 가장 큰 최대공약수를 찾는다. #include #include #include #include using namespace std; int gcd (int a, int b) { return !b ? a..
https://www.acmicpc.net/problem/8595 8595번: 히든 넘버 첫째 줄에 단어의 길이 n (1 ≤ n ≤ 5,000,000)이 주어진다. 둘째 줄에는 단어가 주어진다. 단어는 알파벳 대/소문자와 숫자(0-9)로 이루어져 있다. www.acmicpc.net 문자열속에서 숫자만 걸러내어 총합을 출력하는 문제. 그냥 아무생각없이 풀었다가 자꾸 틀렸다고 나와서 당황했다. 틀린 이유는 숫자의 범위인데, 정말 극단적인 상황을 예시로 들어보면, 999999a999999a9999......가 계속되어 제한길이인 5백만자가 들어온다고 가정하자. 이떄 99999는 약 71만번 등장하게 되는데, 999999 * 71만 = 약 7.1천억이므로, int형 범위를 넘어선다. 따라서 int형이 아닌 lo..
https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 문장을 입력받고, 각 단어를 뒤집어 출력하는 문제. 문자를 입력받은 후에 공백을 기준으로 파싱하고 뒤집어 출력한다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; string str; string token;..