문제 바로가기
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드 및 설명
t = int(input())
for test_case in range(1,t+1):
n = int(input())
if n % 2 == 0: #짝수 개의 카드일 때,
length = n//2
else: #홀수 개의 카드일 때
length = (n//2) +1
string = list(input().split())
stack = []
#반으로 쪼갠다. 짝수 개일 때는 정확히 절반, 홀수 개일 때는 앞쪽의 카드들의 수가 더 많도록 슬라이싱한다.
a_list = string[:length]
b_list = string[length:]
a_flag = True
b_flag = True
while True:
if a_flag == False and b_flag == False: #둘 다 카드가 없다면, 탈출
break
if a_list: #앞의 카드들이 하나도 없을 때까지,
a = a_list.pop(0) #맨 앞의 카드부터 꺼내서
stack.append(a) #스택에 넣는다.
else:
a_flag = False #만약 꺼낼 카드가 하나도 없다면 a_list에 카드가 없다는 뜻으로 flag에 False 저장
if b_list: #뒤의 카드들이 하나도 없을 때까지,
b = b_list.pop(0) #맨 앞의 카드부터 꺼내서
stack.append(b) #스택에 넣는다.
else:
b_flag = False #만약 꺼낼 카드가 하나도 없다면 b_list에 카드가 없다는 뜻으로 flag에 False 저장
print("#{} {}".format(test_case, " ".join(map(str, stack))))
피드백
앞에서 풀었던 stack 자료구조 관련 문제를 참고하여, 이 문제를 stack 자료구조를 활용하여 풀이하였다. stack 자료구조를 활용하여 문제를 풀어보니 상당히 편했다. 비슷한 유형의 문제가 나올 때, stack 자료구조를 적극 활용해야겠다.
'SWEA (SW Expert Academy) > D3' 카테고리의 다른 글
[SWEA/D3] 6190 정곤이의 단조 증가하는 수 (1) | 2023.05.07 |
---|---|
[SWEA/D3] 5948 새샘이의 7-3-5 게임 / 백트래킹 (1) | 2023.05.07 |
[SWEA/D3] 1234 비밀번호 / stack (0) | 2023.05.07 |
[SWEA/D3] 1228 암호문1 (0) | 2023.05.07 |
[SWEA/D3] 1217 거듭 제곱 (0) | 2023.05.07 |