컴공 일기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를 선물하세요.
-
#07년생#08년생#독학생 오르비의 주인이 될 기회 37 37
-
의대 왜감? 1 0
나라면 안갈듯
-
생윤 니부어 질문 0 0
사회강제력은 비합리적 수단 아닌가요 ㄱ이 맞는 이유를 모르겠어요
-
현재 논란인 수특 '여관 속의 여관' 의미 정리해드림 0 0
일단 문제의 지문은 2027수특 문학 갈래복합7 의 '박꽃이 피어난 집' 임....
-
주린이 궁금한거 2 0
이건 왜만든거임? 반도체 곱버스 누가탐? 잘아는분 있나요
-
아 밤낮 다시 바꿔서 3 0
오전 10시 기상 성공했는데 아파서 다시 하루종일 잤어 이게무슨
-
오티 넘무 재밌었다 8 0
다들 너무 착해
-
이정도면 3 0
내가 한화생명 원딜로 들어가야함
-
나는 이제 0 0
운영의 마술사라 할수있음
-
대학 가면 제일 문제가 7 0
컴퓨터를 못가져간다는거임
-
방치했던 스칼렛 바이올렛 2 0
도감작하기..
-
두려워 마라 3 0
내가 간다
-
김기현 기생집 0 0
김기현t 기생집 2, 3점 수1, 수2는 실물이 없는 건가? 페이지에 ebook 표시만 있는데.
-
흑흑
-
스2하는사람 2 0
없음?
-
살면서 5 0
이재석 매드무비보다 잘 만든 매드무비 한 개도 못 봄
-
나왜센츄안줌 3 1
솔직히 일주일전에 신청했으면 줄만한거아니냐
-
대형주를 일단 사고 오른다고 믿으면 오를거임
-
무등산 육두선인 1 0
대재석 매드무비
-
알바 추천좀.. 6 0
뭐하지.. 나이 많은 사람도 써주나
-
나 원딜런데 두오하실 분 8 0
좀 침
-
추억이네 0 0
옛날에 김재원보고 무지성메이픽했는데
-
계속 플래4에서 막혀서 올라가질 않네 3판 더 이기면 다이아였는데 쩝..
-
수험생일 때 연애<<괜찮은 듯 5 0
헤어지면 슬퍼서 공부 많이 하게 되니까
-
통합과학 0 0
1단원은 시험에 나옴? 버려도됨?
-
그 서폿아리들고 ㅇㅇ 넘 못하긴 하시더라 저버네도 야스오땜에 졌음
-
올해 3월에 시행되는 것 2 2
2026년 3월 10일에 시행되는 노란봉투법
-
진짜 억울한게 18 0
아까 아침에 오버워치 15판정도 해서 다이아큐에서 거의 10승 5패는 한거같은데 티어가 플3임
-
모든 오르비언은 내가 직접 인증을 보기 전까지는 남자임 5 3
ㅇㅇ 아무리 여자라고 해도 인증 보기 전까진 안믿음
-
스블 진작 들을걸 5 0
ㅋㅋ 수학 실력좀 오르니까 범바오 강의가 고트네; 배워갈게 많음 진작 들을걸 아쉽다...
-
에바죠? 냉정하게
-
내일도 미주갤가서 분탕쳐야지 0 0
우흥
-
어떤 학습질문이든 받습니다 편하게 질문해주세요 -대형사 모의고사,N제 출제진/검토진...
-
은현이 개잘생겼네 6 0
-
완전 애기가 빤히 보다가 이쁜누나다!! 이래서 기분 너무 좋았음 컼ㅋㅋ
-
수1+수2 자작문제? 2 0
마지막 과정에서 미적분 안 써도 답은 나옵니다! 전에 지루해서 하나 만들어봄.
-
치킨은 1 0
무국물이 킥임
-
일단 개볏신같은 개잡주 안사능건 기본이고 한 -20퍼 박힌다고 안 팔 자신 있어야함
-
6년만 다니고 4 0
졸업한다
-
얘들아 형 왔다 9 0
오랜만이야
-
뻔후를 못받는구나 13 2
좋은 곳으로 입양가렴
-
군대 입대할땐 4 1
군대에서 버텨야 할 1년 반 이런건 신경도안쓰고 걍 인생 시간아끼려고 아무것도 안...
-
고추장 마늘 파스타 14 1
한동안 내 주식은 파스타일듯
-
사탐 하는 고딩만 들어오삼 2 0
쌤들 그냥 50분 동안 교과서 위주로 수업만 하심..?? 아님 교과서없이 판서로 개념 설명?
-
안경쓰면 개못생겨보임 3 0
아.
-
국어황분들 질문있습니다 0 0
2014년 6월 평가원 본질주의 지문을 읽는데 여기서 1문단에서 다시 말해서 본질은...
-
내가 재수에 걸맞는 인재인가 1 0
노리는거 일단은 삼전계약이나 기균메디컬(아마약대?)인데 한다고 하면 성공 할 수...
-
아 진짜 사람이 역겹다 8 1
뭔 마사1지방?성매매 노래방도우미 도박 선임들 저런얘기 할때마다 진짜 뭔 집단에...
-
[특징주] SK하이닉스, 95만원 찍었다… 장중 사상 최고가 기록 8 0
SK하이닉스가 장중 6% 넘게 급등하며 95만원을 돌파했다. 20일 한국거래소에...
-
전적대 자퇴해야되는데 0 0
교수님이 목,금 연락을 아예 안보시는데 월요일까진 자퇴원서 내야될거같은데 계속 전화걸어야되나
홍컴 다니시는데 냥뱃은 뭔가요 ㄷㄷ
에리카 뱃입니다… 뭐 기념비로 가지고 있는 겁니다.
그렇군요.. 전부터 글 봐왔었는데 정말 열심히 공부하시네요
뭐… 부족하니까요. 재미는 있는데, 할 건 많아보이고, 돈은 벌어야 겠는데 게슴츠레 움직이긴 싫고…
이센스를 좋아하시나요?
바퀴가 되든가, 바퀴에 깔리든가.
난 다른 차선에 세우고 깜빡일 켜놔.
라는 라인이 하나 있는데 요새는 그 라인대로 사는 중입니다.
깜빡이 켜놓고 재밌는 거 건들이고 있어요 :)
멋있으십니다! 파이팅이에요:)

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

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