-
acmicpc.net / 알고리즘 기초 1/2 - No.10799 - 쇠막대기Legacy/Be Refactoring.. 2020. 7. 16. 21:28728x90
알고리즘 기초 1/2 - No.10799 - 쇠막대기
TODO
- 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있습니다.
- 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓습니다.
- 각 쇠막대기를 자르는 레이저는 적어도 하나 존재합니다.
- 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않습니다.
Constraints
0 ≦ S ≦ 100,000
Sample Input
()(((()())(())()))(())
(((()(()()))(())()))(()())
Sample Output
17
24
#include <string> #include <iostream> #include <vector> using namespace std; int main() { vector<int> pieces; string str; cin>>str; int answer=0; for(int i=0; i<str.size(); i++) { if(str[i]=='(') { pieces.push_back(str[i]); } else { pieces.pop_back(); if(str[i-1]=='(') { answer += pieces.size(); } else { answer++; } } } cout<<answer<<"\n"; }
How I tried this :
사실 괄호 갯수 2개일때 해결 하는 함수 재귀함수 생각도 해보고
index 층을 쌓아서 층마다 적용되는 (막대기마다) 레이져 갯수 찾아서 나누기 등등
다양하게 고민했지만 너무나 복잡해서 해결해내지 못했다..
살짝 팁을 얻으려고 검색해본 첫 블로그가 ')' 만났을때 레이져면 막대기 갯수/ 막대기 끝나는거면 +1개 알려줫는데.. 너무나 쉽게 풀려버림...
이틀간 계속 도전하다 허탈..
정답을 아는거보다 1000줄로라도 풀었어야 맞는건지. 풀고 허탈감에 빠지는게 맞는건지...
프로그래머스로 접하고 복붙할뿐인데 잘풀렸다. 특별한건 없지만
What I got is :
Main.cc: In function ‘int main()’: Main.cc:16:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] for(int i=0; i<str.size(); i++) { ~^~~~~~~~~~~
경고 뜬 채로 맞긴했지만 찝찝함..
I have to study :
경고 해결해보기
728x90'Legacy > Be Refactoring..' 카테고리의 다른 글
[programmers/Swift] 캐시 (2018 Kakao Blind Recruitment 1차) (0) 2021.02.24 [Programmers.co.kr/Swift] 삼각 달팽이 (0) 2021.02.20 [programmers/Swift] 다트게임 (2018 Kakao Blind Recruitment 1차) (0) 2020.12.02 acmicpc.net / 강의無 - No.1966 - 프린터 큐 (0) 2020.07.21 [Programmers.co.kr/Swift] 쇠막대기 (0) 2020.07.15