본문 바로가기

알고리즘/백준

(10)
201030 1로 만들기 1463번(C++) --잘 모르겠습니다 www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제: X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 이 3가지 연산을 이용해서 입력 값을 1로 만들고, 연산을 사용하는 횟수의 최소 값을 출력합니다. 최소 값은 모르겠고, 그냥 if로 분기해서 풀면 될 것 같다는 생각이 들었습니다. 이렇게 코드를 작성하니 답이 안 나왔습니다. 그래서 찾아보니 다른 분들은 동적 프로그래밍 방법을 사용하고 배열을 이용해 값을 기록 해나갔습니다. 정말 어이가 없었죠 왜 동적 프로그래밍을 사용하는지도 모르겠고, 입력 값이 1개인데 배열을 왜 ..
201030 큐 2 18258번(C++) -컴파일 에러 www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제: 큐를 이용해서 주어진 문자열에 따라서 명령을 수행하면 됩니다. STL 라이브러리에 queue가 이미 있기 때문에 C++을 사용해서 문제를 풀었습니다. 정답: #include #include using namespace std; int main(){ int num; cin >> num; queue q; while(num--){ char flag[6]; cin >> flag; swi..
201030 접미사 배열 11656번(Python 3) www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 문제: 주어진 문자열에서 한 단어씩 잘라가며 새로운 문자열을 만듭니다. 그리고 그 문자열들을 정렬해서 출력합니다. github.com/decten/AlgorithmStudy/blob/master/%EC%A0%91%EB%AF%B8%EC%82%AC%20%EB%B0%B0%EC%97%B4.py 코드: 반복문과 인덱스를 이용해서 새로운 문자열을 만들고 리스트에 추가해줬습니다. 그 후에 sorted 함수로 정렬 해주고, 출력 했습니다.
201030 큐 2 18258번(C++) - 시간초과 www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 : 정수를 가진 큐를 구현한 다음 push, pop, size, empty, front, back 기능을 활용하여 큐를 구성하는 문제입니다. 코드 : 큐 라이브러리(?)를 가져오기 위해서 #include 작성했고,정수를 가진 큐를 구현하기 위해 queue queue 작성했습니다. 문자열을 받은 후에 push, pop과 같은 기능을 처리하기 위해 if~else if문을 활용하였습니다..
201030 A+B-4 10951번(C++) www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 이번에는 백준 - 단계별로 풀어보기 4단계를 끝내보려고 합니다 // 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. #include using namespace std; int main(){ int A, B; cin >> A >> B; cout A >> B) { cout
201030 블랙잭(Python 3) 2798 www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있 www.acmicpc.net 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의..
200923 최댓값 2562번(C++) - 해결 www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net #include using namespace std; int main(){ int a[100]; int max, n = 0; for(int i=1; i> a[i]; if(max < a[i]){ max = a[i]; n = i; } } cout
200921 피보나치 수 5(Python 3) 10870 www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 �� www.acmicpc.net 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그다음 2번째부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 2..