반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[자료구조] 백준 - 스택 본문
728x90
반응형
https://www.acmicpc.net/problem/10828
-문제해설
자바의 경우 ArrayList를 이용해서 풀었다. 배열로 할 경우 pop명령어의 경우 인덱스를 신경쓰는게 귀찮았기 때문이다.
ArrayList를 쓰면 remove() 메소드를 사용할 수 있기 때문이다.
물론 코드의 효율은 배열을 이용하는게 더 좋다.
그리고 if문을 이용해서 명령어를 나눴는데 다른 사람 코드보니깐 switch문을 이용할 수 있었다.
나는 switch문은 문자열은 안되는 줄 알았는데 내가 잘못 알았나보다 ㅎㅎ
파이썬의 경우 리스트에 pop 메소드가 있기때문에 쉽게 구현할 수 있었다.
-자바
package dataStructure;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class BJ10828 {
private static ArrayList<Integer> arr = new ArrayList<Integer>();
private static void stack( String order, int a ) {
arr.add( a );
}
private static String stack( String order ) {
if( order.equals("top") ) {
if( arr.size() == 0 ) return "-1";
else return arr.get( arr.size()-1 )+"";
} else if( order.equals("size") ) {
return arr.size()+"";
} else if( order.equals("empty") ) {
if( arr.size() == 0 ) return "1";
else return "0";
} else { //if( order.equals("pop") )
if( arr.size() == 0 ) return "-1";
else {
int tmp = arr.get( arr.size()-1 );
arr.remove( arr.size()-1 );
return tmp+"";
}
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuffer sb = new StringBuffer();
int n = Integer.parseInt( br.readLine() );
String order;
for( int i=0; i<n; i++ ) {
st = new StringTokenizer( br.readLine() );
if( st.countTokens() == 2 ) {
order = st.nextToken();
int a = Integer.parseInt( st.nextToken() );
stack( order, a );
} else {
order = st.nextToken();
sb.append( stack( order ) + "\n" );
}
}
System.out.println( sb );
}
}
-파이썬
from sys import stdin
stack = []
next( stdin )
s = ""
for line in stdin:
Order = line.split()
if Order[0] == "push":
stack.append( Order[1] )
elif Order[0] == "pop":
if stack: s += stack.pop()+"\n"
else: s += "-1\n"
elif Order[0] == "size":
s += str( len(stack) )+"\n"
elif Order[0] == "empty":
if stack: s += "0\n"
else: s += "1\n"
elif Order[0] == "top":
if stack: s += stack[-1]+"\n"
else: s += "-1\n"
print( s )
728x90
반응형
'데이터 엔지니어링 정복 > Algorithm' 카테고리의 다른 글
[자료구조] 백준 - 덱 (0) | 2021.07.29 |
---|---|
[자료구조] 백준 - 큐 (0) | 2021.07.29 |
[이분탐색, 자료구조] 백준 - 숫자 카드 2 (0) | 2021.07.29 |
[자료구조] 백준 - 괄호 (0) | 2021.07.29 |
[자료구조] 백준 - 카드 2 (0) | 2021.07.28 |
Comments