단어 뒤집기 2
https://www.acmicpc.net/problem/17413
풀이
0. 문자열을 입력받아 원소 하나하나에 접근한다.
1. '<' 을 입력받은 경우는 두가지로 볼 수 있는데 첫번째는 '<'앞에 아무것도 없거나 'abc<' 이와 같이 문자열이 있는 경우로 나눌 수 있다. 두번째 경우를 위해 스택에 있던 모든 자료를 출력한다. 또한 이 경우는 태그가 시작되는 경우이다.
2. '>'을 입력 받은 경우는 태그가 끝난 경우이다.
3. 태그인 경우는 입력받은 문자열 그대로 출력한다.
4. 태그가 아닌 경우는 입력받은 문자열을 뒤집어서 출력해야한다. 이 경우 현재 가르키고 있는 원소가 ' ' 또는 '\n' 인 경우는 스택에 있는 자료들을 출력하고, 그 외의 경우는 스택에 push해준다.
SUDO CODE
GET sentence
BOOLEAN TAG = FALSE
FOR (sentence in char)
IF (char == '<') THEN
PRINT STACK
TAG = TRUE
PRINT char
ELSE IF (char == '>') THEN
TAG = FALSE
PRINT char
ELSE IF (TAG is TRUE) THEN
PRINT char
ELSE
IF (char == ' ') or (char == '\n')
PRINT STACK
PRINT char
ELSE
PUSH char
END_IFELSE
END_IFELSE
쇠막대기
https://www.acmicpc.net/problem/10799
0. 괄호 문자열을 입력받고 괄호 원소 하나하나에 접근한다.
1. 스택에는 괄호의 index 정보를 넣어준다.
2. '('인 경우는 스택에 push해준다.
3. ')'인 경우는 레이저인 경우와 아닌 경우로 나눌 수 있다.
4. 레이저인 경우는 stack의 top과 현재 가르키고 있는 index의 차이가 1인 경우이다. 이 경우 stack size만큼의 쇠막대기 조각이 생긴다.
5. 레이저가 아닌 경우는 쇠막대기가 끝나는 경우이기 때문에 1만큼의 쇠막대기의 조각이 생긴다.
오큰수
https://www.acmicpc.net/problem/17298
오등큰수
https://www.acmicpc.net/problem/17299
후위 표기식2
https://www.acmicpc.net/problem/1935
후위 표기식
https://www.acmicpc.net/problem/1918
알파벳 개수
https://www.acmicpc.net/problem/10808
알파벳 찾기
https://www.acmicpc.net/problem/10809
문자열 분석
https://www.acmicpc.net/problem/10820
단어 길이 재기
https://www.acmicpc.net/problem/2743
ROT13
https://www.acmicpc.net/problem/11655