https://www.acmicpc.net/contest/view/116

 

2015 ACM-ICPC 연습

 

www.acmicpc.net

오늘은 저번 주에 풀던 [꿍의 여친 만들기] 문제를 해결하고, [Virus] 문제를 시도했습니다.

 

[꿍의 여친 만들기]는 여성의 이상형 리스트를 받아 그 중 가장 성취하기 쉬운 매력도에 대한 cost를 구하는 문제입니다.

풀이 자체는 어렵지 않습니다.

이상형들 중 가장 얻기 힘든 매력의 cost들을 비교하여 가장 낮은 것을 출력하면 됩니다.

하지만 입력받은 data를 가공하는 작업이 다른 문제들에 비해 난이도나 양이 조금 높았습니다.

그 부분에서 저번 주에 문제가 있었고, 이번주에도 많은 시간을 낭비하였습니다.

 

또한 StringStream 초기화 부분에서 문제가 발생하기도 했습니다.

여러 객체를 생성하지 않고 하나의 StringStream 객체를 생성해서 사용하는데, 

StringStream 객체를 clear 하거나 flush 해도 안의 내용이 남아 있었습니다.

이에 대해 해결 방안을 찾다가 다음 블로그에서 해답을 찾았습니다,

http://egloos.zum.com/mcchae/v/11130705

 

[C++] std::ostringstream 의 clear 문제

요즘에는 주로 Python을 이용하고, 부로 C나 C++을 이용하는 경우가 많습니다. 이번에는 C++에서 ostringstream 을 이용하다가 발생한 문제를 어느 분께서는 시행착오 하시지 말라고 정리해 봅니다. std::ostringstream는 어떤 때 사용하는게 좋을까요? 다음과 같은 경우에 좋습니다. 어느 자료를 계속해서 메모리 스트림에 넣었다

egloos.zum.com

"Clear 함수는 안의 내용을 실질적으로 지우지 않고 rdbuf라는 플래그만 0으로 초기화 한다"는 내용입니다.

이를 해결하기 위해서는 stringstream 안에 담긴 string을 blank string으로 덮어씌워주고,

rdbuf를 초기화 하여 앞에서부터 다시 담을 수 있도록 해야합니다.

 

오늘 해결하다가 만 [Virus]는 생화학폭탄의 폭파까지 걸리는 시간을 출력하는 문제입니다.

폭탄 안에는 N개의 바이러스가 있고, 각 바이러스는 N개 미만의 바이러스와 1개의 성분을 생성하며 자가분해합니다.

이 중 중성자(정확히는 삼중수소)의 갯수가 한도를 넘어가면 폭탄이 폭파합니다.

 

이 문제는 입력 받은 데이터를 정리하고, 대략적인 문제 푸는 방식을 세우는 것까지 완료하였습니다.

주어진 바이러스 공식을 하나씩 적용하면서 조건을 맞춰보면 될 것으로 예상합니다.

몇가지 걱정거리가 있다면, 입력된 바이러스의 변이가 일관적이지 못해 한번 정리를 해야 한다는 점.

바이러스 중 발생하지 않는 바이러스가 존재 할 수 있다는 점.

순환 발생 체크나 폭탄이 폭파하지 않는 조건 판단 등.

 

그리고 영어 문제라서 문제 해석이 느린 점도 앞으로의 개선 사항이라 생각합니다.

문제를 풀면서 독해 능력이 조금은 늘었으면 싶습니다.

'개발일지 > Algorithm' 카테고리의 다른 글

20.06.02 2015 ACM-ICPC 연습  (0) 2020.06.02
20.05.26 - 2015 ACM-ICPC 연습  (0) 2020.05.26
20.05.19 - 2015 ACM-ICPC 연습  (0) 2020.05.19
20.05.05 - 2015 ACM-ICPC 연습  (0) 2020.05.05
알고리즘 일지입니다.  (0) 2020.05.01

+ Recent posts