컴공 일기265
게시글 주소: https://ui.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를 선물하세요.
-
친구가 보내줘서 읽어봣는데 은근 도움되네 주변 사물 찾기 ㅋㅋㅋㅋㅋㅋㅋ 이런 스킬들도 잇음..
-
기출도 못풀겠다
-
일주일 조용하다가 이러는데 걍 나도 신고박아야겟지 수학과외 몇명보이던뎅
-
공부 이틀안했다고 ㅈㄴ밀렸는데 자꾸잠오고 추움 ㅂㄷㅂㄷ
-
ㅈㄱㄴ
-
이대 합격 점수 0
926.48 영어교육 924.70 특수교육 923.57 영어교육 925.67...
-
현역 수능땐 국수 4~5등급이였지만 영어는 현역 6모 이후로 3 이상 나왔고...
-
하.. 0
수시 계속 챙겨야할까 내가 보기엔 턷없이 부족한점순데 6논술 쓸생각이욨다만…
-
민트테 어차피 못 찍을건데
-
수학은 평가원보다 교육청이 더 어려운 문제도 있는데 13
국어는 평가원이 왤케 압도적으로 어렵지? 이 문제는 평가원이 만든 문제라고 자각하면서 풀어서 그런가
-
반영영역도 골고루 국어 수학 영어 탐구 로 한 개인의 역량을 다방면으로 평가해서 그...
-
수컷-수컷 사이서 태어난 쥐, 세계 첫 ‘성체 쥐’로 성장 17
생물학적 아버지가 둘이고 어머니가 없는 쥐가 처음으로 성체까지 자랐다. 발달...
-
술 픽업 완 7
카시스, 바나나, 멜론
-
나 몰랐는데 3
친척들이랑 있을 때도 기 빨리더라
-
생윤...때론꿀같지만꿀이아닌듯하면서애매한과목
-
양승진왈 1
난 너를 보면~
-
나 왜 공부했지 10
내신 왜챙겼냐 ㄹㅇ 최저만 맞춰도 정시로 붙는데
-
엠티 복귀날에 6
리조트에서 학교로 다 같이 복귀한 다음 학교에서 각자 집으로 귀가한다는데 리조트...
-
업무시간 아니라면서 안 받는데 이러면 오늘 출근 안 함 + 조발 없음 인거죠?….
-
수학 칼럼은 단순히 수학만 잘한다고 쓸 수 있진 않은듯 4
내가 설명하고 싶은 내용을 줄글로 서술할 수 있는 언어적 능력도 받쳐줘야 뭘 쓰든...
-
국어 20프로 수학 40프로 영어 감점 연대식으로 10프로 반영 탐구 과탐필수...
-
민주누님 생카만 갈라했는데 레이누님 같이하네? 럭키비키네요.
-
혼자서 공부하기는 좀 그래
-
고려대학교 학부대학에서 25학번 새내기를 찾습니다!! 3
고려대학교 학부대학에서 25학번 새내기를 찾습니다!! 안녕하세요! 고려대학교...
-
최고 점수가 5점입니다.. 6점 이상은 재능의 영역일까요? 뭐가 문제일까유 ㅠㅠ
-
여기출신 애들이 전부가 다 뛰어난 애들 같진 않던데 일부 뛰어난 사람들도 있긴...
-
콜드브루 맛있다 4
맛있어
-
미적 개념은 두바퀴정도 돌리긴했는데 아직 수1.2처럼 완벽하게 체화는 안된거같아서...
-
중학교때까지 열심히 하다가 고1,2때 공부를 놓은 건 아니었지만 공부법을 몰라서...
-
음함수 난이도 대결 14
가장 어려운 문제는 무엇인가요? 1. 200621(가) 2. 220629 3....
-
질의응답 앞사람보다 엄청 적은게 느껴지면.. 불합시그널이겠지? ㅠ 1차는.. 엄청...
-
노래를 들으며 하자니 집중이 안되는구나.....
-
수특 계획 0
레벨2>레벨3>레벨1 ,유제
-
사회과학대학 이런건 예전보다는 큰의미가 없고요 첨단바이오융합대학에서 연구하시는 이...
-
"동덕여대 지원자는 불가촉천민"…단국대 전 홍보대사 발언 논란 10
누리꾼 "홍보대사가 학교 명예 실추" 단국대 "개인 발언…학교 입장 아냐"...
-
정법 vs 생명 0
생명 작수 3등급 평소에 모고 풀거나 사설 풀면 1-2등급 나와서 생명 나름 자신...
-
.
-
칸샤노코토바시카데테코나이요 아토모도리와시나쿠테이이노 이마모토코로와 카엣~테네무루다케
-
일단 3모까지 기준으로 짰어요 화살표 왼쪽은 60~70퍼 정도 진행했습니다 1월동안...
-
그게 나야 바 둠바 두비두밥~ ^^
-
공군오지마라 9
너무길어서정신병걸리기일보직전임
-
평가원 #~#
-
의대 못가고 연대기계공 가게되어서 만족하려면 연봉3억이상 받을 정도로 크게...
-
저 이번에 확통런했는데 커리 한번만 봐주세여 ㅠ 일단 이미지쌤 세젤쉬 듣고 미친개념...
-
조발 기원
-
난도 ㅇㄸ?
-
사람이 부를 노래가 아님..
홍컴 다니시는데 냥뱃은 뭔가요 ㄷㄷ
에리카 뱃입니다… 뭐 기념비로 가지고 있는 겁니다.
그렇군요.. 전부터 글 봐왔었는데 정말 열심히 공부하시네요
뭐… 부족하니까요. 재미는 있는데, 할 건 많아보이고, 돈은 벌어야 겠는데 게슴츠레 움직이긴 싫고…
이센스를 좋아하시나요?
바퀴가 되든가, 바퀴에 깔리든가.
난 다른 차선에 세우고 깜빡일 켜놔.
라는 라인이 하나 있는데 요새는 그 라인대로 사는 중입니다.
깜빡이 켜놓고 재밌는 거 건들이고 있어요 :)
멋있으십니다! 파이팅이에요:)
팔로우는 따로 받지 않아용 ㅠ_ㅠ
ㅠㅠ
c언어 주로 공부하시는 건가요
C, C++을 주로 보고 있습니다.
두 언어가 사실 몹시 매우 다른 속성의 언어인데 이 친구들 공통점이
컴퓨터구조 / 네트워크 / 운영체제 핵심을 자세히 살펴볼 수 있는 장점을 갖고 있어요.
말하자면, 전공 공부할 때 요긴한 언어들입니다.
스택문제 너무 어려버
스택… 어렵죠 ㅠㅠㅠ
와 꾸준하시다 멋져요
오랜만에 뵙습니다. 감사합니다 :)