Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- RootMotion
- algorithm
- C++
- 백준
- 티스토리챌린지
- Frustum
- UnrealEngine4
- 오블완
- Unreal Engine5
- GeeksForGeeks
- Programmers
- 프로그래머스
- IFileDialog
- directx
- 2294
- DeferredRendering
- UnrealEngine5
- 1563
- UE5
- softeer
- C
- const
- 줄 세우기
- 언리얼엔진5
- RVO
- 팰린드롬 만들기
- winapi
- NRVO
- DirectX11
- baekjoon
Archives
- Today
- Total
Game Develop
[Algorithm] Programmers :: 짝지어 제거하기 본문
https://programmers.co.kr/learn/courses/30/lessons/12973
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
int solution(string s)
{
int answer = -1;
stack<char> tempStack;
while (s.size() != 0)
{
char stand = s.back(); // 일단 뽑는다
s.pop_back();
char popedTempStack;
if (s.size() == 0) // 뽑고나서 스택에 아무것도 없으면 (비교할게 없으면)
{
if (tempStack.size() == 0) popedTempStack = '-';
else popedTempStack = tempStack.top();
if (stand == popedTempStack)tempStack.pop();
else tempStack.push(stand);
}
else // 뽑고나서 스택에 1개라도 있으면
{
if (stand == s.back()) s.pop_back(); // 연속된 수 있으면 빼버리기
else // 연속된 수 아니면 마찬가지로 tempStack top이랑 비교
{
if (tempStack.size() == 0) popedTempStack = '-';
else popedTempStack = tempStack.top();
if (stand == popedTempStack) tempStack.pop();
else tempStack.push(stand);
}
}
}
if (tempStack.size() == 0) return 1;
else return 0;
return answer;
}
|
cs |
약간 전형적인(?) 스택을 이용해서 푸는 문제인데, 사실 위 코드는 다른사람들의 풀이에 비해 지저분한 편이다.
말 그대로 당장 생각나는대로 구현한거라서 그렇다. 코딩테스트 준비자체를 이렇게 열심히 하는건 거의 처음이라서, 아직 각 유형에 대해 빠릿빠릿하게 구현이 떠오르지 않는다.
아래 코드는 다른 사람의 풀이이다. 딱봐도 어마무시하게 많이 차이가 난다.
비록 지금은 위의 코드처럼 짰지만, 다음엔 분명히 안그럴것이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
int solution(string s)
{
stack<char> c;
int answer = 0;
for(int i=0; i<s.size(); i++){
if(c.size()==0){
c.push(s[i]);
continue;
}
if(c.top() == s[i])
{
c.pop();
}
else{
c.push(s[i]);
}
}
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
if(c.empty())
answer = 1;
else{
answer = 0;
}
return answer;
}
|
cs |
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] Programmers :: 체육복 (0) | 2022.05.24 |
---|---|
[Algorithm] Programmers :: 여행경로 (0) | 2022.05.21 |
[Algorithm] Programmers :: 네트워크 (0) | 2022.05.19 |
[Algorithm] Programmers :: 타겟 넘버 (0) | 2022.05.19 |
[Algorithm] Programmers :: 피보나치 수 (0) | 2022.05.18 |