본문 바로가기
728x90

알고리즘49

구름 문제은행 (시공의 폭풍 속으로) <C++> //방법1. #include using namespace std; int main() { int arr1[4], arr2[5], i, j, cnt=5; for(i=0; i>arr1[i]; for(i=0; i>arr2[i]; for(i=0; i 2020. 7. 17.
문자열 총정리 <C++>: char, string, #include <cstring>, #include <string>, getline, 문자열 알고리즘 문제를 풀 때 필요한 문자열 정리 1. 선언 방법 - 문자열 선언 방법에는 크게 두가지가 있다. 1. char타입(문자형)의 배열을 만드는 것 2. string 타입의 변수를 선언하는 것 -> string은 문자열 타입이고, 변수로 선언하더라도 배열과 크게 다르지 않다. (vector 개념을 사용하기 때문이다.) -> 또한 string은 int, float, char와 같은 기본 타입이 아니기 때문에 헤더파일을 포함시켜주어야 한다. (실제로 코드를 짜다보면 코드에서 char의 색깔은 바뀌고, string은 까만 색인 것으로 알 수 있다.) -> #include을 이용해 포함하거나 #include 을 이용하여 포함시킨다. char ex. string ex1. string ex2. 2. 문자열 길이.. 2020. 7. 12.
구름 문제은행 (앵무새 꼬꼬) <C++> #include #include using namespace std; int main() { int n, len, i, cnt; string str; cin>>n; getline(cin, str); while(n--) { getline(cin, str); len=str.size(); cnt=0; for(i=0; i 2020. 7. 11.
구름 문제은행 (배열 합치기) <C++> 구름 문제은행에 있는 문제들 몇몇은 참 조건이 부족해서 문제를 읽을 때 참 불편한 느낌이 있다. 게다가 구름 문제? 보다 윤군님 문제가 더 많은 것 같기도;; a, b의 범위라던지 등등 대강 했더니 맞았다. 입출력 예시 1로 설명하겠다. a_pointer와 b_pointer이 각각 0부터 시작한다. a[0]과 b[0]을 비교해서 b[0]이 더 작으므로 b[0]을 출력하고 b_pointer은 1이 된다. a[0]과 b[1]을 비교해서 a[0]이 더 작으므로 a[0]을 출력하고 a_pointer은 1이 된다. . . . 쭉쭉 가다가 a배열이나 b 배열이 끝까지 간 상황이라면 하나만 출력한다. #include using namespace std; int main() { int a_size, b_size; in.. 2020. 7. 4.
[백준] 17615. 볼 모으기 <C++> https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주�� www.acmicpc.net 음.. 무언가 규칙이 있을 것 같기는 한데 떠오르지는 않았다... 그래서 정말 단순하게 알고리즘을 생각했다. 파란색들을 왼쪽으로 다 모을 때, 오른쪽으로 모을 때 빨간색들을 왼쪽으로 다 모을 때, 오른쪽으로 모을 때 (코드에서 정말로 배열의 각 방을 스왑하거나 하지는 않는다. 개수를 셀 뿐이다.) 이렇게 네 가지의 경우를 모두 구해 최소값을 구하도록 만들었다. RB.. 2020. 6. 20.
[백준] 1789. 수들의 합 <C++> https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net #include using namespace std; long long s, sum, n; int main() { cin>>s; for(int i=1; 1; i++) { sum+=i; if(sum>s) { n=i-1; break; } } cout 2020. 6. 7.
[백준] 9094. 수학적 호기심 <C++> https://www.acmicpc.net/problem/9094 9094번: 수학적 호기심 문제 두 정수 n과 m이 주어졌을 때, 0 < a < b < n인 정수 쌍 (a, b) 중에서 (a2+b2+m)/(ab)가 정수인 쌍의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테 www.acmicpc.net 나누기를 나머지로만 바꾸면 되는 단순한 문제였다. 하지만 나는 바보 같은 짓을 또 했다 . . . . . . 조건만 보고 반복문을 0부터 돌렸다가 에러가 났다. 바보다... 0으로 나눌 생각을 하다니 큰 실수를 했다.. 다음부턴 꼭 조심..! #include using namespace std; int cnt, n, m, t, a, b; int main(.. 2020. 6. 3.
[백준] 9093. 단어 뒤집기 <C++> https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 www.acmicpc.net 처음엔 스택을 쓸까 했는데 굳이 코드만 길어지고 덜 효율적일 것 같아 배열만 이용하였다. #include #include using namespace std; int n, sw; string str; int main() { cin>>n; cin.ignore(); // 버퍼 무시 for(int k=0; k 2020. 6. 3.
구름 문제은행 (n진법) <C++> #include using namespace std; int n, r, i; char arr[100]; int main() { cin>>n>>r; while(n) { if((n%r)>=10) arr[i]=(n%r)+55; else arr[i]=(n%r)+48; n/=r; i++; } for(i-=1; i>=0; i--) cout 2020. 5. 30.
728x90