목록백준 (497)
알고리즘 모음(C++)
문제 링크입니다. https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net N개만큼 문자열이 주어지고 M개만큼 문자열이 주어질 때, M개 문자열에 N개 문자열이 몇개가 들어있는지 구하는 문제입니다. N, M이 최대 10,000이기에 완전 탐색을 했다가 시간초과가 됩니다. 따라서 이분 탐색을 통해 N 속에 M이 들어있는지 확인해줘야 합니다. 자세한 것은 코드를 참고해주세요. #include #include #include ..
문제 링크입니다. https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 문제에서 주어진 함수를 사용한 뒤, 호출 개수를 세는 것만 추가해주면 됩니다. 자세한 것은 코드를 참고해주세요. #include #include #include #include #include #include #include using namespace std; int N; int cnt; int recursion(const char *s, int l, int r){ cnt++; if(l >= r) return 1; else if(..
보호되어 있는 글입니다.
문제 링크입니다. https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 종이 몇% 있는지 구하는 문제입니다. map을 사용해 중복된 종은 1씩 증가하며, 새로운 종은 추가해줍니다. 마지막에 X번째 종의 개수와 전체 개수의 백분율을 구해 출력해주면 됩니다. 자세한 것은 코드를 참고해주세요. #include #include #include #include #include #include #include #include using namespa..
문제 링크입니다. https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 8진수를 2진수로 바꾸는 문제입니다, 8진수를 2진수로 바꾸는 방법은 한자리마다 3개의 2진수로 바꾼 뒤, 합쳐주면 됩니다. 314의 경우에는 3, 1, 4로 나눈 뒤, 각각의 2진수를 3자리 구해줍니다. 011, 001, 100이 되는데, 이를 합쳐줍니다. -> 011001100, 여기서 시작이 0이 되면 안되니, 11001100을 출력하면 됩니다. 자세한 것은 코드를 참고해주세요. #include #include #include #include #include #include #in..
문제 링크입니다. https://www.acmicpc.net/problem/4999 4999번: 아! 입력은 두 줄로 이루어져 있다. 첫째 줄은 재환이가 가장 길게 낼 수 있는 "aaah"이다. 둘째 줄은 의사가 듣기를 원하는 "aah"이다. 두 문자열은 모두 a와 h로만 이루어져 있다. a의 개수는 0보다 크거 www.acmicpc.net 두 문자열의 길이를 비교하면 되는 문제였습니다. 자세한 것은 코드를 참고해주세요. #include #include #include #include #include #include #include #include #include using namespace std; string x, y; int main(){ cin.tie(0); cout.tie(0); cin >> x..
문제 링크입니다. https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net A의 앞과 뒤에 원하는 알파벳을 추가해 B와 같은 길이로 만들 때, A와 B의 차이를 구하는 문제입니다. 문제를 푸는 키는 원하는 알파벳을 추가한다는 것이였습니다. 따라서 A와 B를 비교해 차이가 가장 작은 위치를 찾습니다. 해당 위치에서 남은 길이를 B와 똑같이 추가하면 되니 이때의 차이가 답입니다. 자세한 것은 코드를 참고해주세요 #in..
문제 링크입니다. https://www.acmicpc.net/problem/2935 2935번: 소음 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 www.acmicpc.net 더하기와 곱하기를 하는 문제입니다. 숫자의 자릿수가 최대 100이기에 일반적인 정수형 변수로는 구할 수 없습니다. 따라서 문자열을 통해 답을 구해야합니다. 곱하기의 경우에는 0의 개수만 샌 뒤, 이를 뒤에 붙여주기만 하면 됩니다. 더하기의 경우에는 2개 문자열의 0의 개수를 샌 뒤, 같다면 시작을 2로 하고 0을 붙여줍니다. 다르다면 해당 위치에 1을 놓기만 해주면 됩니다. 자세한 것은 코드..
문제 링크입니다. https://www.acmicpc.net/problem/1919 1919번: 애너그램 만들기 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs www.acmicpc.net 두 문자열에서 최소한의 문자를 없애 애너그램으로 만드는 문제입니다. 문자를 지우는 경우는 2가지 입니다. 1. 알파벳이 둘 다 있지만 개수가 다른경우 2. 한 문자열에만 알파벳이 있는 경우 1번째 경우에는 알파벳 개수의 차이만큼만 없애주면 되고, 2번째 경우에는 없는 모든 알파벳을 없애줘야합니다. 자세한 것은 코드를 참고해주세요 #include #incl..
문제 링크입니다. https://www.acmicpc.net/problem/5218 5218번: 알파벳 거리 첫째 줄에 테스트 케이스의 수 (> N; for(int i = 0; i ..
문제 링크입니다. https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 가로 혹은 세로로 누울 자리를 찾는 문제입니다. 누울 자리는 항상 2칸 이상이여야 하며, 끝에는 짐이나 벽에 닿아야합니다. 자세한 것은 코드를 참고해주세요 #include #include #include #include #include #include #include using namespace std; int N; char map[111][111]; int row, c..