나 개발자 진짜 되냐?

백준 C++ 1316번 그룹 단어 체커 ( break, continue ) 본문

C++을 시작해봐요!/구현문제를 풀어봤어요!

백준 C++ 1316번 그룹 단어 체커 ( break, continue )

Snow Rabbit 2025. 12. 22. 00:49

 

오랜만에 또 왔습니다.

 

오늘 문제는 굉장히 제 머리를 아프게 했지요.

벌써 12월이 많이도..갔습니다.

시간은 빠르긴 한데..

... 네 빠르네요.

일단 네

오늘의 최악의 문제를 풀어보겠습니다.

 


 

 

흥... 까다로운? 문제인가 본지

예제가 무려 6개다.

이해를 돕기 위한 것일까?

간단하게 말하면.

aaabbbccc 

이건 되는데

앞에 a, b가 나왔으니까 c 뒤에는 a나 b가 오면 그룹 단어가 아니라는 뜻이다.

 

이렇게 생각을 했는데....

a랑 b를 bool값으로 저장하면 될 거 같다가 도..?

앞에 거를 어떻게 체크 하지?라는 생각에 빠져..

스택으로 풀어야 하나? 하는 심각한 상황까지 맞이했다.

 

결국 조력자의 도움을 받았다.

 

그냥 앞의 글자와 비교해서 

같으면 그냥 넘기고

다르면 전의 문자는 다시 나오면 안 된다.

그냥 앞의 글자와 비교해서 하면 된다는데

 

어떻게 그런 생각을 한 거지?

나는 왜 스택을 생각한 거지? 하면서 문제를 풀기 시작했다.

 

풀다보며 막힌 것..

모든 조건을 통과했을 때 answer ++ 해줘야 하는데

 그것을 어디에 해줘야 하지? 하며 돌아다녔다.

이때부터 머리가 터져서 더 이상 안 돌아갔다.

 

그래서 조력자는 나에게

bool ok =  true로 하고

이 조건을 통과하지 못했을 때 false로 한 다음

마지막에 if문으로 검사해서 ok이면 answer++ 하라고 했다.

 

  흠....

어렵다.

이렇게 if문으로도 가능하구나를 알았다.

 

그리고 if문으로 조건을 걸라고 했다.

 

continue와 break

자주..?! 쓰긴 하는데

 

왜 여긴 continue고 여긴 break일까?

싶어서

알아온 것은

 

 

매우 큰 깨달음(?)
breakcontinue는 for/ while/ return 에만 반응하는 친구라는 것..

 

break는 for문을 아예나가 버리는 친구고

continue는 그 밑으로만 안 하고 다음 for문으로 넘어가는 것!

 

 

이렇게 된다.

 

사실 이것도 헷갈렸지만.

if문으로 조건을 거르고 걸러서 결국 가장 퓨어한 

seen [now] = true

즉, 이 단어는 이제 만나면 안 된다.!!!!

를 만들기 까지가 어려웠다.

이렇게 if문으로 거르고 걸러서 깨끗한 걸 내는 방법은 자주 안 했었다.

if /else로 조건만 걸어봤지...

...

익숙하지 않다.

어렵다.

어렵다!!!!!

 

그래도 고생했다.

아직 완벽하게 이해했다면 거짓말이지만..

또 반복하다 보면 좋아지겠지...ㅎㅎㅎ

 

배운 것

break

밑에 다 버리고 가장 가까운 for / while 탈출하기

 

continue
밑에 다 버리고 for문 다음 거 돌기