[백준] 18115 카드 놓기 - Java / Python
평범한 덱 문제처럼 보이지만...
조금 다르다. 문제 이해가 매우 중요하다.
알고 있는 것 : 스킬을 사용하는 목록 / 스킬 사용 후 결과
알아야 하는 것 : 초기 상태
초기 상태와 명령어를 주고 결과값을 구하는 문제가 대부분인데, 이 문제에서는 초기 상태를 구해야 한다.
스킬을 적용하는 순서를 알고 있으니, 거꾸로 스킬을 적용하며 덱에 숫자를 추가하는 방식으로 해결할 수 있다.
풀이 방법이 생각나지 않을 때, 거꾸로 적용해 보는 것도 생각해보자!
Java
import java.io.*;
import java.util.*;
public class temp {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i=N-1; i>=0; i--){
arr[i] = Integer.parseInt(st.nextToken());
}
Deque<Integer> dq = new ArrayDeque<>();
int num = 1;
int temp = 0;
for(int i=0; i<N; i++){
int skill = arr[i];
if(skill==1){
dq.offerFirst(num);
}else if(skill==2){
temp = dq.pollFirst();
dq.addFirst(num);
dq.addFirst(temp);
}else if(skill == 3){
dq.addLast(num);
}
num = num + 1;
}
StringBuilder sb = new StringBuilder();
while(true){
if(dq.isEmpty()){
break;
}
sb.append(dq.remove() + " ");
}
System.out.print(sb);
}
}
Python
파이썬도 자바와 같은 방향으로 풀었다.
from collections import deque
N = input()
skill = list(map(int, input().split(" ")))
dq = deque()
num = 1
temp = 0
for i in range(len(skill)):
if skill[len(skill)-1-i]==1:
dq.appendleft(num)
elif skill[len(skill)-1-i]==2:
temp = dq.popleft()
dq.appendleft(num)
dq.appendleft(temp)
elif skill[len(skill)-1-i]==3:
dq.append(num)
num = num + 1
for i in dq:
print(i, end = " ")
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 11279 최대 힙 - Java / Python (0) | 2022.02.13 |
---|---|
[백준] 17413 단어 뒤집기 2 - Java / Python (0) | 2022.02.13 |
[백준] 2504 괄호의 값 - Java / Python (0) | 2022.02.12 |
[백준] 2346 풍선 터뜨리기 - Java / Python (0) | 2022.02.11 |
[백준] 1620 나는야 포켓몬 마스터 이다솜 - Java / Python (0) | 2022.02.11 |
댓글
이 글 공유하기
다른 글
-
[백준] 11279 최대 힙 - Java / Python
[백준] 11279 최대 힙 - Java / Python
2022.02.13 -
[백준] 17413 단어 뒤집기 2 - Java / Python
[백준] 17413 단어 뒤집기 2 - Java / Python
2022.02.13 -
[백준] 2504 괄호의 값 - Java / Python
[백준] 2504 괄호의 값 - Java / Python
2022.02.12 -
[백준] 2346 풍선 터뜨리기 - Java / Python
[백준] 2346 풍선 터뜨리기 - Java / Python
2022.02.11