본문 바로가기

반응형

알고리즘 문제풀이/추천 문제

(55)
[ 백준 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]; // ..
[ 백준 2501 ] 약수 구하기 (C++) https://www.acmicpc.net/problem/2501 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 벡터를 생성하고 N을1부터 N까지의 수로 나눈 다음 나누어 떨어지는 숫자(약수)를 벡터에 추가해줬다. 벡터에는 약수만 있으므로 K-1번째(인덱스는 0부터 시작하므로) 숫자를 출력해주면 된다. 단, 벡터의 크기가 K보다 작으면 K째 작은 약수가 없으므로 0을 출력해준다. #include #include using namespace std; int main(){ int N, K; cin >> N >> K; vector lst; for(int i = 1; i
문제 출처 아래 블로그에서 추천해준 문제들에 대한 문제 풀이. 여기 없는 문제도 몇 개 있다. https://covenant.tistory.com/224 코딩테스트 대비를 위한 백준 문제 추천 코딩테스트 대비를 위한 백준 문제 추천 끝 없는 훈련만이 실전에서 흐트럼없이 정답을 향해서 움직일 수 있습니다. (Photo by Specna Arms on Unsplash) 작년 한 해 수많은 코딩테스트를 직접 경험하고 covenant.tistory.com

반응형