본문 바로가기

알고리즘24

백준 에디터 (1406번) c++ 문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제 풀이 처음 문제를 보고 나는 vector로 풀까 하고 생각을 했다. 하지만 시간 제한이 0.3초 인걸 확인하고 vector.erase와 vector.insert가 시간초과에 걸릴거 같아 연결리스트로 생각을 바꿨다. vector로 구현한 소스이다. #include #include #include using namespace std; int main(){ ios_base::sync_with_.. 2023. 4. 18.
백준 9012번(괄호) 문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 풀이 스택 개념을 이용하여 풀면 된다. 나는 여기서 스택을 이용하진 않고 단순히 result 변수를 통해 숫자를 세어줌으로써 해결하였다. 전체 코드 #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin >> N; for(register.. 2023. 4. 17.
백준 9093번 (단어 뒤집기) 문제 https://www.acmicpc.net/problem/9093 문제 풀이 이 문제는 스택을 사용하여 푸는 문제이다. 하지만 입출력 또한 중요한 문제이다. string 변수와 cin을 통해 'I am happy today'를 받으려고 하면 'I'만을 저장하게 된다. 왜냐하면 공백을 만나면 문자열의 끝으로 인식하여 'I' 만을 저장하게 된다. 그래서 다른 방법이 필요하다. 바로 getline을 이용하는 것이다. getline은 두가지 종류가 존재한다. istream라이브러리의 cin.getline(), string 라이브러리의 istream& getline()이 존재한다. cin.getline cin.getline (char* s, streamsize n, char delim); 첫번째 인자는 ch.. 2023. 4. 17.
백준 1620번(나는야 포켓몬 마스터 이다솜) c++ 문제 https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 문제 풀이 이 문제는 Map 혹은 Hash로 아주 쉽게 풀 수 있다. C++ Map 사용법 https://go-jowick.tistory.com/15 C++ STL Map 사용법 Map이란? map은 각 노드가 key와 value로 이루어진 트리이다. 중복을 허용하지 않는게 특징이다. 그리고 map은 검색, 삽입, 삭제 등이 O(logn)인 레드블랙트리로 구성되어.. 2023. 4. 16.