목록백준/여러가지 문제들 (39)
Study hard

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net [풀이] 링크드 리스트로 풀었다. 자기 자신의 번호와 다음 사람의 주소로 이루어진 구조체 배열을 만들어 현재 사람에서부터 K번째에 있는 사람을 찾아다니며 제거해주었다. #include #include using namespace std; struct Person { int Num;//자기 번호 Person *next;//다음 사람 번호 }; Person P[5001]; vectorRemove;//원에서 제거되는 순서 Person *nowP;//현재 위치 int N, K; //원 이어주기 ..

https://www.acmicpc.net/problem/1406 1406번: 에디터 문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 www.acmicpc.net [풀이] 처음엔 string의 erase, insert를 사용하여 풀어보았는데, 시간초과가 났다. erase와 insert의 시간복잡도가 string 길이가 N일 때 약 O(N)이 걸리기 때문에 시간이 초과된 것 같다. string으로 푼 코드 #include #include using namespace std; string str; char Cmd; string PushWord; int Cur..

https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net [풀이] 1. C++ STL string의 내장 함수인 substr을 사용하여 모든 접미사를 vector에 저장한다. 2. vector을 C++ STL algorithm의 내장 함수인 sort로 정렬한다. #include #include #include #include //sort using namespace std; string str; vectorv;//접미사 저장 void solution() { cin >> str; int Len = str.size(); for (int..

https://www.acmicpc.net/problem/10824 10824번: 네 수 첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000) www.acmicpc.net [풀이] 1. A,B,C,D를 string으로 받는다. 2. A 뒤에 B를, C 뒤에 D를 붙여준다. (+연산) 3. A와 C를 자연수로 변환해주고 더해준다. ※주의할 점 A,C를 int형으로 바꿀 경우 범위에서 벗어날 수도 있다. 따라서 long long으로 바꿔준다. #include #include using namespace std; string A, B, C, D; long long Num1 = 0, Num2 = 0; void solution() { cin >> A >> B >..

https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net [풀이] ASCII코드표를 참고하여 알파벳 범위를 넘었을 때만 잘 처리해주면 된다. #include #include using namespace std; string str; void solution() { getline(cin, str); for (int i = 0; i = 65 && str[i] = 97 && str[i] 90 && str[i] 122) ch = 'a' + (str[i] +..

https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net [풀이] 입력받는 문자열에 공백도 포함시켜야 하기 때문에 getline(cin, S)를 사용하였다. (S는 string) int형 배열 Info[4]에 소문자, 대문자, 숫자, 공백이 나올 때마다 +1 해 주었다. #include #include using namespace std; int Info[4];//0:소문자, 1:대문자, 2:숫자, 3:공백 void init() { for (int ..