컴공 일기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를 선물하세요.
-
점메추 ㄱ 18 1
ㄱㄱ
-
어이가 없네....
-
윤사하시는 분들 질문 있는데 2 1
240909 4번선지 모든 쾌락은 그 자체로 좋으므로 선택될 만한 가치를 지닌다....
-
데뷔합니다 4 3
조교 선발됨
-
누구 들을지랑 시대인재 사탐 컨텐츠 정리해주세요오
-
낭인:재수 미끄럼방지: 반수 보험대 대충 현역때 중경외시 목표로 했는데...
-
솔직히 나한텐 국어 재능충이라는 소리가 아까움 13 2
진짜 재능충이면 지금 1등급이겠지 에휴
-
안규백은 그냥 3 5
#~#
-
우리나라 은근 안망할듯 4 2
우리나란 은근 안망할듯 원래 저출산 때문에 망할줄 알았는데 Ai가 떡상해서 로봇으로...
-
써킷 몇등급대가 하는게 좋어요? 문제 잠깐 봤는데 살벌해보이던데
-
7덮 기하 후기 0 0
14: D좌표 확정짓고 AB랑 길이 같으려면 a=-1 백호행동1 15: 계산벅벅하니...
-
제곧내..
-
7섶은 제발 생2 50 1 0
개념 열심히 할게요ㅠ
-
대체 왜 그러는 건지 모르겠는데 최근에 자꾸 우리나라의 미래에 회의주의적인 시각을...
-
수학 n제 추청해주세요 0 0
지인선s1s2 설맞이12 이해원12 드릴123457워크북 설레임 호ㅓ룡점정 빅포텐2...
-
코노스바 1 1
이세계물goat
-
비마트에서밥묵을거야무지게삿다 1 1
가격이좋구나
-
수학 엔제를 넘 조금풀음 나름 내 최고속도로 하는데도 하나 끝내는데 2주이상은...
-
돼시코기 2 1
개팔자가 상팔자여
-
7덮 등급 궁예좀 1 0
언미영물1생2 97 84 92 48 47 목욜에 현장응시함
-
리트도 귀찮다 4 2
시간 아껴서 공부나 해야지
-
확통은 8맞 보장을 못하겠음 2 0
기하 해야겠지?
-
에어컨 끄고 28,29도 되는 후덥지근한 상황속에서 땀나고 찝찝하고 뇌도 정신...
-
국어는 3 2
나한테 나쁜 방법이 남한텐 좋을수도 있고 나한테 좋은 방법이 남한테는 나쁠수도 있다...
-
유체 신유형 1 0
어제 출제하고 인스타에 올림
-
야스쿠니 신사 0 0
이름 ㅈㄴ 야하네 야스 못하고 가미카제 하다가 뒤진 새끼들 추모하는 곳 아니냐
-
문학에서 자꾸 뇌가 비벼지는데 0 0
모고를 치면 문학에서 ㅂㅅ같이 판단할때가 한두문제씩 나와요 민철쌤 풀커리중이고...
-
꿈에서 13 1
비갤에서 저격당하는꿈 꿈
-
내로라하는 검증된 강사들도 본업 응대대상이 고딩들인 환경을 십수년을 살아오니까...
-
아니 뭐야 바지 8 2
거꾸로 입고 있었네
-
드디어 글 써진다!! 8 6
안녕하세요그린라임입니다
-
7덮 기하 손풀이 13 0
28번 상황파악하고 미리 사인세타 범위 구하니까 만족하는 선지가 1번밖에 없어서 걍...
-
7덮 언제였음 3 1
수학 어땠나요
-
국어 타격이 너무커 0 1
진짜 어카지 이거 너무 우울한데
-
N제 4 0
9모 전까지는 스블하고 기출만 할려하고 9모 이후부터 실모랑 n제 풀려하는데 많이는...
-
영어 생노베에서 단어 양치기로 3등급 정도 나오는데 항상 감으로 찍는 기분이 들어서...
-
김범준 스블 2 0
6월정도부터 시작해서 스블 수2 미분까지 0.7회독 정도하고 확통은 확률까지 했고...
-
다상다독 1회 풀어보신분.. 0 0
개어려움ㅠㅠ
-
하지만 밥은 버리더라도 늦잠은 버릴 수 없어
-
범작가님 유명한 분인가요 5 5
범바오는 아는데 말이죠
-
이감 5-2 0 0
이거 어려운 거 맞죠? 독서가 개빡빡하던데.. 독-9 문-6 85점 1등급...
-
리트 언어이해 몇시에 올라옴 0 1
올라오면 시간 맞춰서 푸러봐야징
-
이감 파이널 2회 개망 7 0
3개 찍맞인데도 73이면 구제불능이네 7연속 2도 깨지겠군
-
꽃길만 걸으면서 사세요
-
서바 1회 8 3
국어 88 수학 89인데 한 97 99 97 99 되려나 응시일은 주말 단과인데 왜 저래뜨는지 ㅁㄹ
-
좀 경제적으론 못살아도 자유로운 나라에서 살고 싶음 12 2
대한민국은 거대한 정병 제조기임
-
와 뭔 이런새끼들이있네 ㅋㅋㅋ 1 2
와 존나 대가리비어있다 ㅋㅋㅋㅋㅋㅋㅋㅋ저 병신들 나라를 영국으로만들려고하네 재발...
-
6평 스러너 1회 2 0
-22, 28(찍맞), 30 분명 체감상 빡빡한데 생각보다 막 심하게 쳐박지는 않음...
-
ㄹㅇ궁금함
-
[생1 기출/N제 저자] 수능 생명과학1 과외 모집 0 0
* 자세한 문의는 아래의 링크를 통해 연락 바랍니다....

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

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

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