자료구조를 매번 직접 구현해서 푸는 건 거의 불가능에 가깝다.

C style로 풀더라도 STL을 사용하면 좀더 빠른 구현이 가능하니까 익숙해지도록 하자.

 

Stack : 10828번 (http://boj.kr/d9375b2a95744c15836b94b588c425cc)

Queue : 10845번 (http://boj.kr/9412f140024348dca6c335e71c60a8a9)

Deque : 10866번 (http://boj.kr/c196f255fb8046d78444fcf52816a9e5)

Priority queue : 11279번 (http://boj.kr/26fffbf3bd8647ef82c268b593c11f25)

 

자료구조를 한번에 다루다 보니까 소스코드를 직접 올릴 수 없어 코드로 대체한다.

문제에서 수행해야 할 커맨드 (10828번)

대체로 주어진 구현해야하는 커맨드는 위와 같다. 소소한 차이는 있지만, 크게 벗어 나지 않는다.

네 자료구조 모두 비어있는 상태에서 pop()을 시도하거나 값을 가져오려고하면 메모리 접근 관련된 런타임 에러가 난다는 것을 감안해서 프로그램을 작성 해야한다. 문제에서 pop()에 관한 조항이 있으니 실수로라도 놓지지 말고 반드시 확인하도록 하자.

 

또한, cin, cout이 시간을 많이 쓰므로, Priority queue에선 시간 초과가 난다는 점을 조심해야 한다.

 

split()을 대신한 stringstream

Java가 아니라 C++로 문제를 푸는 사람들은 입력시 " "(공백문자)를 어떻게 처리 해야할지 난감할 때가 있다.

"push_front 1" 같은 입력은 띄어쓰기 때문에 cin으로는 원하는 입력을 얻을 수 없다. 

 

std::getline()을 이용하여 입력받고, 입력받은 op를 stringstream에 넣어 스트림으로서 하나씩 꺼내 쓸 수 있어,

사실상 split()을 한 것과 비슷한 효과를 얻을 수 있다.

 

'컴퓨터과학 > 알고리즘 문제풀기' 카테고리의 다른 글

16235번 : 나무 재테크  (0) 2019.10.17
7576번 : 토마토  (0) 2019.07.15
1212번 : 8진수 2진수  (0) 2019.07.15
9012번 : 괄호  (0) 2019.07.15
문제풀이 계획  (0) 2019.07.15

+ Recent posts