[백준] 3986번: 좋은 단어 C++로 풀어보기

2023. 7. 22. 23:47·Algorithm/Baekjoon(C++)

3986번 설명

어떻게 풀까? (문제를 처음 보고 든 생각)

스택을 사용하자.

for문을 써서 현재 for문이 가리키는 알파벳이 스택의 top에 있는 알파벳과 같다면 pop을 하자.

for문 loop가 다 끝나고 스택이 비어있으면 좋은 단어고, 아니면 좋은 단어가 아니다.

 

코드
#include <bits/stdc++.h>
using namespace std;


int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n; // 단어 수
	int cnt = 0; // 좋은 단어 개수
	cin >> n;


	while (n--) {

		stack <char> s;
		string a;
		cin >> a;

		for (int i = 0; i < a.length(); i++) {
			if (s.empty()) { // 스택이 비어있다면
				s.push(a[i]); // 현재 알파벳 push
			}
			else if(s.top() == a[i]){ // 스택의 top과 현재 알파벳이 같다면
				s.pop(); // pop!
			}
			else {
				s.push(a[i]); // 아니라면 현재 알파벳을 스택에 push
			}
		}

		if (s.empty()) { // 만약 스택이 비어있다면
			cnt++; // cnt를 더해준다.
		}
	}

	cout << cnt; // cnt 출력
}

 

결과

3986번 결과

왜 이렇게 많이 틀렸냐면...

#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	stack <char> s;
	int n;
	int cnt = 0;
	string a;
	cin >> n;


	while (n--) {

		while (!s.empty()) { // 스택이 비어있지 않다면
			s.pop(); // 비워준다.
		}

		cin >> a;

		for (int i = 0; i < a.length(); i++) {
			if (s.empty()) { // 만약 스택이 비어있으면
				s.push(a[i]); // 현재 알파벳을 스택에 푸쉬
			}
			else if (s.top() == 'A') { // 만약 스택의 top이 'A'라면
				if (a[i] == 'A') { // 그리고 현재 알파벳이 'A'라면
					s.pop(); // 스택을 pop 한다.
				}
			}
			else if (s.top() == 'B') { // 만약 스택의 top이 'B'라면
				if (a[i] == 'B') { // 그리고 현재 알파벳이 'B'라면
					s.pop(); // 스택을 pop 한다.
				}

			}
			else {
				s.push(a[i]);
			}
		}

		if (s.empty()) {
			cnt++;
		}
	}

	cout << cnt;
}

이것도 논리상으로는 다 맞는 거 같은데 틀렸다고해서 여기저기 건들다가 저 사단이 났다.

왜 틀린 걸까? 계속 생각해봐야겠다.

저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Baekjoon(C++)' 카테고리의 다른 글

[백준] 2798번: 블랙잭 C++로 풀어보기  (0) 2023.07.24
[백준] 5430번: AC C++로 풀어보기  (0) 2023.07.24
[백준] 2164번: 카드2 C++로 풀어보기  (0) 2023.07.22
[백준] 1874번: 스택 수열 C++로 풀어보기  (0) 2023.07.17
[백준] 5397번: 키로거 C++로 풀어보기  (0) 2023.07.15
'Algorithm/Baekjoon(C++)' 카테고리의 다른 글
  • [백준] 2798번: 블랙잭 C++로 풀어보기
  • [백준] 5430번: AC C++로 풀어보기
  • [백준] 2164번: 카드2 C++로 풀어보기
  • [백준] 1874번: 스택 수열 C++로 풀어보기
퀵차분
퀵차분
Web Developer 🥐
QC's DevlogWeb Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (176) N
      • Frontend (30)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (9) N
        • crohasang_page (2) N
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    타입스크립트
    프로그래머스 자바스크립트
    react
    리액트
    오블완
    javascript
    KUIT
    fedify
    자바스크립트
    음악추천
    next.js
    프론트엔드
    시스템프로그래밍
    알고리즘
    티스토리챌린지
    HTML
    인공지능
    typescript
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[백준] 3986번: 좋은 단어 C++로 풀어보기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.