-
[Programmers.co.kr/Swift] 쇠막대기Legacy/Be Refactoring.. 2020. 7. 15. 21:01728x90
코딩테스트 연습 - 스택/큐 - 기능개발
TODO
- 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있습니다.
- 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓습니다.
- 각 쇠막대기를 자르는 레이저는 적어도 하나 존재합니다.
- 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않습니다.
Sample Input
()(((()())(())()))(())
Sample Output
17
#include <string> #include <vector> using namespace std; int solution(string arrangement) { int answer = 0; vector<int> pieces; for(int i=0; i<arrangement.size(); i++) { if(arrangement[i]=='(') { pieces.push_back(arrangement[i]); } else { pieces.pop_back(); if(arrangement[i-1]=='(') { answer += pieces.size(); } else { answer++; } } } return answer; }
How I tried this :
사실 괄호 갯수 2개일때 해결 하는 함수 재귀함수 생각도 해보고
index 층을 쌓아서 층마다 적용되는 (막대기마다) 레이져 갯수 찾아서 나누기 등등
다양하게 고민했지만 너무나 복잡해서 해결해내지 못했다..
살짝 팁을 얻으려고 검색해본 첫 블로그가 ')' 만났을때 레이져면 막대기 갯수/ 막대기 끝나는거면 +1개 알려줫는데.. 너무나 쉽게 풀려버림...
이틀간 계속 도전하다 허탈..
정답을 아는거보다 1000줄로라도 풀었어야 맞는건지. 풀고 허탈감에 빠지는게 맞는건지...
What I got is :
// 아직 이유를 모르겠다. string str; str = "ABCDE"; for(int i=0; i<str.size(); i++) { // 얜안되고 // str[i]=="X" ? return true : return false; // 얜 된다.. str[i]=='X' ? return true : return false;
I have to study :
vector<int>
문제에 관한 모든 저작권 : https://programmers.co.kr/
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 acmicpc.net / 알고리즘 기초 1/2 - No.10799 - 쇠막대기 (0) 2020.07.16