자료구조 연습문제

Kongsub·2020년 2월 10일
0

Algorithm

목록 보기
5/10

연습 문제

단어 뒤집기 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

네 수
https://www.acmicpc.net/problem/10824

접미사 배열
https://www.acmicpc.net/problem/11656

profile
심은대로 거둔다

0개의 댓글