본문 바로가기

반응형

전체 글

(174)
[ 백준 1978 ] 소수 찾기 (C++) https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수는 약수가 1과 자기 자신인 수 뿐이다. 소수인지 판별해주는 isprime() 함수를 만들고 입력값이 소수면 정답을 1씩 증가시켜주면 된다. #include using namespace std; int isprime(int x){ if(x == 1) return 0; if(x == 2) return 1; for(int i = 2; i < x; i++){ if(x % i == 0) return 0; } return 1; } int main(){ int n, x, ..
[ 백준 2693 ] N번째 큰 수 (C++) https://www.acmicpc.net/problem/2693 2693번: N번째 큰 수 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000 www.acmicpc.net 그냥 정렬해주고 7번째 인덱스 출력해주면 끝이다. 초간단.. #include #include using namespace std; int main(){ int A[10]; int T; cin >> T; int *ans = new int[T]; for(int i = 0; i > A[j]; } s..
[ 백준 2609 ] 최대공약수와 최소공배수 (C++) https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 최대공약수는 유클리드 호제법을 사용하여 쉽게 구할 수 있다. 유클리드 호제법은 아래와 같다. ​ a, b 두 수가 있다. 이때 a는 항상 b보다 커야한다. a % b = c b % c = d c % d = 0 이면 a, b의 최대공약수는 d다. ​ 재귀 함수로 간단하게 구현할 수 있다. 최소공배수는 두 수의 곱에 최대공약수를 나눠주면 된다. #include #include using namespace std; int gcd(int x, int y){ if(x % ..
[ 백준 2309 ] 일곱 난쟁이 (C++) https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 모든 난쟁이의 키를 더한 다음 100을 빼준 값을 sum에 저장한다. 두 수의 합이 sum을 만족하는 숫자 두 개를 찾기만 하면 된다. #include #include using namespace std; int main(){ int x[9]; int sum = -100; for(int i = 0; i > x[i]; sum += x[i]; } sort(x, x+9); int c..
[ 백준 10870 ] 피보나치 수 5 (C++) https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 재귀 버전으로 간단하게 풀었다. for문으로도 풀어봤다(주석 참고). #include using namespace std; int fib(int x){ if(x == 0) return 0; if(x == 1 || x == 2) return 1; return fib(x - 1) + fib(x - 2); } int main(){ int n; cin >> n; c..
[ 백준 2460 ] 지능형 기차2 (C++) https://www.acmicpc.net/problem/2460 2460번: 지능형 기차 2 최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. www.acmicpc.net 각 역마다 사람 수를 구하고, 최대값을 따로 저장하면 된다. #include using namespace std; int main(){ int out, in; int max = 0, people = 0; for(int i = 0; i > out >> in; people = people + in - out; if(max < people) max = people; ..
[ 백준 10818 ] 최소, 최대 (C++) https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 숫자를 입력받을때마다 최대, 최소값을 초기화해준다. 최대, 최소값 초기화는 문제의 조건에 따라 각각 최소, 최대값으로 설정한다. #include using namespace std; int main(){ int N, num; cin >> N; int max = -1000000; int min = 1000000; for(int i = 0; i < N; i++){ ..
[ 백준 3460 ] 이진수 (C++) https://www.acmicpc.net/problem/3460 3460번: 이진수 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. www.acmicpc.net 테스트 케이스 T크기의 배열을 만들어준 다음, T의 모든 원소를 이진수로 변환하고 1의 인덱스를 출력해주면 된다. 이진수 변환은 손으로 직접 해본 결과 몫이 0일때까지 계속 나눠주다가 몫이 0이 되면 끝에 1을 붙여주면 된다. #include #include using namespace std; int main(){ int T, num, idx; cin >> T; int* ary = new int[T]; // ..

반응형