백준 4949 문제는 단계별로 풀어보기 카테고리에서 스택, 큐에 있는 문제다.
문제
입력 & 출력
풀이
먼저 입력으로 주어지는 문자열을 받아야 한다.
입력의 조건으로 문장 마지막에는 "." 이 온다는 것을 통해 "."을 기준으로 문장을 구별할 수 있다.
마지막으로 check() 메서드를 통해 입력받은 문장이 "yes" 인지 아니면 "no" 인지 확인하여 StringBuilder에 추가해주고 출력하면 되는 문제이다.
check() 메서드를 보면 먼저 문자열로 들어온 test를 charAt을 사용하여 i번째 해당하는 문자를 뽑아주고 해당 문자를 조건문을 통해서 판단한다.
만약 문자로 ')'가 들어 왔는데 스택에 데이터가 없거나 peek() 메서드를 사용했을 때 '('가 아닌 경우는 "no"를 출력해야 한다. 마찬가지로 ']' 가 들어왔을 경우도 똑같이 스택에 있는 데이터를 확인하여 처리한다.
반복문을 통해서 test 문자열을 다 확인하고 난 뒤 마지막으로 조건문을 통해 스택이 비어있는지, 데이터가 남아 있는지 확인한다.
스택에 데이터가 남아 있다면 괄호의 짝이 안 맞는 경우라는 뜻이고 "no"를 출력해야 한다.
예제로 주어지는 문자열을 확인해보면 마지막으로 "." 데이터가 들어오는 것을 확인할 수 있는데 해당 데이터는 스택에 삽입하지 않고 반복문이 종료되기 때문에 스택이 비어있는 상태가 되고 "yes"가 출력되게 된다.
'알고리즘 공부' 카테고리의 다른 글
백준 실버4 28278번(자바) (0) | 2023.09.03 |
---|---|
백준 실버4 9012번(자바) (2) | 2023.09.03 |
백준 실버4 10773번(자바) (0) | 2023.08.29 |
백준 실버4 2164번(자바) (0) | 2023.08.29 |
백준 실버4 1748번(자바) (0) | 2023.08.29 |