컴공 일기265
게시글 주소: https://orbi.kr/00071396715
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스 문제입니다.
스택을 이용해, 입력된 괄호끼리 짝을 다 맞출 수 있는지를 판단하는 겁니다.
‘짝’이라는 것을 어떻게 프로그래밍 언어로 표현할 것이냐를 묻고 있는데, 가장 일반적인 접근은 조건문이죠.
if(stack.top == ‘(‘ && input == ‘)’) // true
if(stack.top == ‘{ && input == ‘}’) // true
if(stack.top == ‘[‘ && input == ‘]’) // true
이런 식으로요.
실제로 제가 기술했던 코드에서도 조건문에 기반하여 짝을 확인하고 있습니다.
하지만, 조금 더 멋있게 푸는 방법이 있으니 그것은.. C++ STL(standard library)에서 지원하는
unordered_map 자료구조를 이용하는 겁니다.
맵은 일종의 순서쌍이라고 생각하면 되는데 굳이 조건절 반복해서 쓰지말고, 아예 통째로
unordered_map 자료구조에 (’{‘, ’}‘) (’[‘, ’]‘) (’(‘, ’)‘)를 미리 저장해 두고 확인만 해보면 된다는 논리죠.
제가 아래 기술한 풀이보다 unordered_map 자료구조를 이용한 풀이가
readability가 더 좋을 겁니다.
다만 뭐… 이 풀이도 나쁜 건 아니죠.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
void answer(string& s, int& ans)
{
stack<char> st;
int size = s.size();
for(int i=0; i<size; i++)
{
//열린 괄호만을 스택에 push
if(s[i] == '(' || s[i] == '[' || s[i] == '{')
{
st.push(s[i]);
}
else
{
//스택이 비어있는 상태라면 짝을 맞출 수 없으므로 종료
if(st.empty()) return;
//괄호끼리 짝을 지을 수 있는지 확인
if(s[i] == ']' && st.top() == '[') st.pop();
else if(s[i] == ')' && st.top() == '(') st.pop();
else if(s[i] == '}' && st.top() == '{') st.pop();
}
}
//문자열 끝까지 확인한 후 스택이 비어있다면 그 문자열은 괄호끼리 짝을 전부 맞출 수 있음
if(st.empty()) ans++;
}
void left_rotation(string& s)
{
int size = s.size();
char first = s[0];
for(int i=0; i< size-1; i++)
{
s[i] = s[i+1];
}
s[size-1] = first;
}
int solution(string s)
{
int size = s.size();
int ans = 0;
for(int i=0; i<size; i++)
{
answer(s, ans);
left_rotation(s);
}
return ans;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
나 검색해보니까 2 2
출신고 붙였는데 이름 비슷한 타지역 고등학교에 동명이인만 뜨네
-
아니 아빠이름 검색했는데 0 0
진짜 나오네 와 뭐지
-
구글 ai에 부모님 검색했는데 3 2
직장부터 대학까지 ㅈㄴ 자세하게 나옴 좀 무섭네
-
막상 만기 돼서 모은 돈으로 비싼 물건 사려니까 큰 돈 쓰는게 너무 두려워서 다시...
-
효율적인 독해에 관한 칼럼 0 0
나는 어떠한 것을 공부할 때 무조건적으로 가장 효율 좋게 공부하는 법을 추구함....
-
국어 0 0
이매진 너무 밀렸는데 지금이라도 문학만 풀까요
-
키위새 만져보고싶다 0 1
한번 안아보고싶네 너무귀엽다
-
한국사는 언제부터?? 5 0
갑자기 의지가 불타올라서 방학 목표 야무지게 세우고있었는데 한국사는 언제부터...
-
생1 vs 지1 1 0
생1은 25수능 때 찍맞 2개인가해서 백분위 92고 26수능 때 찍맞 없이 백분위...
-
내일 이감인데 오전에 0 0
또 지각하게 생겼네 하
-
구글 ai 뭐냐 2 1
출신고+본명 조합 검색하니 나를 너무 잘알고 있는데 이새끼 머임?
-
기하가 너무 두렵다 6 2
예제는 잘 풀리는데 기출드가서 조때는거 아니겟지..
-
지금 모두가 어떻게든 물어뜯을 궁리만 하고 하닉도 자사주로 바꾸자고 쇼부보려하는 걸 보면
-
피램vs문학론 0 0
고2 이고 여름방학 부터 제대로 해볼라고요. 갸울방힉에 강기본 들었는데 안 맞아서...
-
지금 수도권 ㅈ반고 재학중인 고1이고 이번 여름방학에 물리학 역학파트 해놓으려고...
-
내신1.21정시파이터가간다 4 1
서울대여나에게오거라
-
안녕히 주무세요 ㅠㅠㅠ 2 0
아 오늘은 진짜…. 제대로 말아먹…. 낼은 열심히 할거에요 ㅠㅠㅠ
-
진짜 정시 빨리했으면 0 1
수학이 이정도는 아닐거같은데 내 인생이 망해간 모든순간에 수학이 있어
-
고2부터 정시 할걸 1 0
나는 진짜 학종을 믿었다고 그때까지는
-
날찾지말아줘 0 0
내슬픔가려줘
-
오늘의공부6일차 3 1
-
내신 하면서 현타오는건 6 0
1학년 1학기를 4.0가까이 받아놓으니까 이제 복구가 안됨
-
그냥 고등학교 자퇴할걸 0 0
괜히 갓반고 쳐가서 내신도 말아먹고 정시는 하루종일 방해받고 고1때 자퇴가 맞았다
-
고2 여름방학 0 0
6모기준 국어 높 1, 영어 높 2 나왔는데.. 방학동안 영어는 독해위주, 국어는...
-
근데 솔직히 물리 내신에서 1 1
역학에서 개념만 묻고 계산 쉽게 출제해서 1등급이었지 아니었으면 3들급이었을듯...
-
중학교때 열심히 했어야함 1 0
롤 몇천시간 하고 그랬으니까 인생이 힘들어짐 비학군지 일반고인데도 탈탈 털리고...
-
지하철에서 번따 실패한 썰 11 2
여느때와 같이 학교에 가려고 지하철을 타고 있는데 갑자기 미친...
-
일반고에서살아남기3계명 19 2
1. 항상 선생을 의심하라 2. 정시를 방해하는 선생은 무시하라 3. 1과 2를 잊지마라
-
ewc 결승이 KC vs DK 0 0
근데 롤 프로게이머라면.. 루시드는 보고 배워라
-
애들이 일반고인대도 학종으로 기적이 일어날거라고 대부분 생각하는 느낌인데 보면서...
-
실모 뭉태기로 뽑아서 제본 쥰나해야지 크크크
-
일반고는 7 0
매년 수시만 철썩같이 믿다가 배신당하는 애들 한트럭
-
개인적으로 요새 궁금한건데 당연히 학원에서 배웠다 생각하고 4점부터 풀어제끼고...
-
서초구 방배동 부근 지역도 학구열이 굉장한 편입니다 18 2
서울고 (야구로도 유명한 그 대학 맞습니다) 서문여고 경문고 (행정구역 상 동작에...
-
솔랭 3연승 9 0
좋네
-
가다군에 컴공 있는 대학이 2 0
어디였더라
-
졸업학점 200 딱 맞추면 이쁠것같은데 3-1에는 2학점짜리 하나 들을 예정이어서
-
만약 나중에 출판하면 7 1
표지에 씹덕ver고양이귀미소년 넣고싶음
-
아니 빨리 대학들 3 1
오르비특기자 전형 신설하라고
-
나무위키 보고 오니까 4 1
수학중에서는 현우진씨 강좌 입문 난이도가 상당히 높다는데 사실인가요?
-
화성고는 5 0
1컷이 전교 상위 60%네
-
전대실모 영어 쉬웠나요 0 0
재수하고 영어를 한번도 안해서 객관적으로 판단이안됨
-
레반 발롱도 복구시켜주고..
-
딮기 왜 이김 8 0
어떻게 34위전이 젠티전
-
개그 goat 다음 월드컵도 나와주십시오
-
편의점에 크루져 왜안팔지 4 0
집근처엔 파는딩 왜안팔아
-
8학군 전교 1등은 20 1
뭐하는 애들임
-
담주에 한번 술이나 마시자 2 0
먼저 죽는 사람이 술 다 사는거다
-
현역 수학 훈수좀녀ㅠㅠ 0 0
확통 6모 76 7모 80 나왓고 지금까지 기생집 공통 (점프제외) 수분감...
-
우리 반에 전교 1등 있는데 4 1
1등 5과목 2등 1과목이라 석차로 등급 매겨도 1.16임 거기에 1등급 3%대였던...

홍컴 다니시는데 냥뱃은 뭔가요 ㄷㄷ
에리카 뱃입니다… 뭐 기념비로 가지고 있는 겁니다.
그렇군요.. 전부터 글 봐왔었는데 정말 열심히 공부하시네요
뭐… 부족하니까요. 재미는 있는데, 할 건 많아보이고, 돈은 벌어야 겠는데 게슴츠레 움직이긴 싫고…
이센스를 좋아하시나요?
바퀴가 되든가, 바퀴에 깔리든가.
난 다른 차선에 세우고 깜빡일 켜놔.
라는 라인이 하나 있는데 요새는 그 라인대로 사는 중입니다.
깜빡이 켜놓고 재밌는 거 건들이고 있어요 :)
멋있으십니다! 파이팅이에요:)

맞팔해요팔로우는 따로 받지 않아용 ㅠ_ㅠ
ㅠㅠ

대신 이걸 줄게요 :)c언어 주로 공부하시는 건가요
C, C++을 주로 보고 있습니다.
두 언어가 사실 몹시 매우 다른 속성의 언어인데 이 친구들 공통점이
컴퓨터구조 / 네트워크 / 운영체제 핵심을 자세히 살펴볼 수 있는 장점을 갖고 있어요.
말하자면, 전공 공부할 때 요긴한 언어들입니다.
스택문제 너무 어려버
스택… 어렵죠 ㅠㅠㅠ
와 꾸준하시다 멋져요
오랜만에 뵙습니다. 감사합니다 :)