17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
문제 풀이 :
flag 를 이용해서 true면 역순, false면 그냥 출력이 되도록 하였습니다.
tag < 부터 > 까지는 그냥 출력하다가
> 를 만나면 flag를 true로 두어 이후 문자열은 역순으로 출력해야하기 때문에 stack에 넣습니다.
만약 공백을 만나면 스택이 비어있을 때까지 꺼냅니다.
import java.util.Scanner;
import java.util.Stack;
public class Main{
static Stack<Character> stack = new Stack();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
boolean flag = true; //false 면 정방형, true 면 reverse
String answer="";
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(c=='<') flag = false;
if(c=='>') {
flag = true;
answer+= '>';
continue;
}
if(flag) {
if(c!=' ') stack.push(c);
}
if(!flag || c==' ') {//정방형
while(!stack.isEmpty()) answer+= stack.pop();
answer+=c;
}
}
while(!stack.isEmpty()) answer+= stack.pop();//스택에 남아있는 문자들
System.out.println(answer);
}
}
'ALGORITHM > 프로그래머스 | 백준 | 삼성 | 카카오' 카테고리의 다른 글
[백준] 11660번 구간 합 구하기 5 (0) | 2021.03.23 |
---|---|
[백준] 17609번 회문 (0) | 2021.03.21 |
[프로그래머스] 올바른 괄호 (0) | 2021.03.19 |
[프로그래머스] 단속카메라 (0) | 2021.03.16 |
[프로그래머스] 카펫 (0) | 2021.03.16 |