오늘도 풀만한 문제가 없나 백준을 들락날락거리는 Koder. 매우 즐거운 문제를 발견해 아무도 상상 못할 기상천외한 방법으로 풀어보았습니다. https://www.acmicpc.net/problem/13022 13022번: 늑대와 올바른 단어 첫째 줄에 단어가 주어진다. 단어는 w, o, l, f로만 이루어져 있으며, 길이는 50을 넘지 않는다. www.acmicpc.net 정석인 풀이로 보자면 일일히 문자열을 비교해가며 문자의 갯수와 순서를 일일히 비교하겠지만 저는 딱 보자마자 들었던 생각이 문자열이 50자밖에 안되면 4*13 = 52이니 사실상 48글자일 것이고, wolf에서는 다음 문자열이 두가지 갈래로 확장될 수 있습니다! 하나는 wwoollff (문자를 하나씩 더 붙임), 나머지 하나는 wolf..
정보올림피아드 2010년 중등부 1번 문제이다. 중등부 1번을 오래걸리는 능지수준 ㅠ https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net #include #include #include int arr[100001] = {0}; int n; long long int min = 2000000001; int main(){ scanf("%d", &n); for(int i=0; i= abs(arr[fp]+arr[ep])..
지난번에 풀었던 단지번호매기기? 문제랑 비슷해서 건드렸는데 의외로 고민했으나 고민한 이유가 매우 의미읎는것이었다. 재귀함수짜는데 fill함수 앞에 return을 붙여놔서 방향이 여러갈래로 나뉠때 탐색을 제대로 못했기 때문이었다 ㅠ return만 떼니 AC. https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 항상 프로그래밍을 하면서 하는 생각 중의 하나인데, 프로그래밍을 할때 보수적으로 문제해결하는게 아무래도 굉장히 안 좋은 행위라고 나는 생각한다...
배열 사용하는법에 관한 문제다. 그리 어렵지는 않아서 그냥 호다닥 풀었다. https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net #include char arr[5][21] = {0}; int main(){ for(int i=0; i
이항계수가 뭔지 몰라서 푸는데 좀 걸렸다... 괄호안에 숫자 두개 적어놓고 계산하라는데 어떻게하라는지 알아야 풀든말든 하지 ㅠㅠ 솔직히 백준같은 알고리즘은 수학선행안하는 사람을 너무 차별한다 ㅠ 지금부터라도 선행해야하나.. https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 한번 검색해보고 이항 계수 가 nCr과 같다는걸 안 이후로는 무난하게 풀었다. #include int f(int a){ if(a == 0 || a == 1) return 1; return f(a-1) * a; } int main(){ int n,k;..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 딱 보고 떠오른 방법은 위에서 내려가는 방법이겠지만 그러면 너무 시간이 오래 걸릴것 같아서 반대로 아래에서부터 올라오는 방식으로 짜보았다. 인접한 두가지를 비교해서 둘중 더 큰 숫자를 윗줄의 숫자에 더해주는걸 반복하면, 가장 큰 숫자가 제일 윗줄에 올라올것이고, 그 가장 윗줄만 출력해주면 된다. #include int arr[1001][1001] = {0}; int main(){ int n; scanf("%d", &n); for(int i=0; i
https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀어보았다. dp용 배열 arr은 걍 널찍널찍하게 잡았고, arr[i]는 i원을 만들 수 있는 경우의 수이다. #include int n,input[101],k; int arr[100001] = {0}; int main(){ scanf("%d %d", &n, &k); for(int i=0; i
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 바로앞에 풀었던 큐랑 큰 차이는 없다 그냥 보기좋게 구현해봄 #include #include #include std::deque d; int main(){ int n,t; char s[20]; scanf("%d", &n); for(int i=0; i
https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 간단한 문제라 stl써서 간단히 구현하려했는데 의외로 막혔던문제 #include #include #include std::queue q; char input[10] = {0}; int main(){ int n,t; scanf("%d", &n); for(int i=0; i
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 1920 수 찾기랑 크게 다른점이 없다 살짝만 바꿔줘도 통과 가능했음. #include #include int input[500001] = {0}; int search(int arr[], int s, int e, int f){ if(s>e) return 0; int mid=(s+e)/2; if(arr[mid] == f) return 1; else if(arr[mid]..