[伯俊#5430]コミュニケーション
7133 ワード
1.問題の説明
2.解説
一見、指示通りに実施すれば良いのではないでしょうか.ただし、時間制限は1初期なので、効率性を考慮して解決します.逆順序ソートを行うには
O(n)
の時間的複雑さが必要であり、list.pop(0)
の演算も同様に消去して前に引く必要があるため、O(n)
の時間が必要である.また,この繰返し命令の個数のため,合計O(n^2)
時間が必要であり,当然タイムアウトする.まず、「R」は反転配列の関数であり、Rが2回入ると反転の意味がないので削除し、
rev
と表記された場合、反転された場合はTrueとし、そうでない場合はFalseとする.そして、削除演算を行う場合には、rev
に従って1つのインデックスを前倒しまたは後回しにして削除処理を行う.出力は、前後を指すインデックスの和がn以下であることのみが正しい出力であり、そうでなければerror
に戻って終了する.3.コード
from sys import stdin
input = stdin.readline
def solution(cmds, nums, n):
cmds.replace('RR', '') #뒤집기를 두 번 하면 뒤집지 않는 것과 같음
s, e, rev = 0, 0, False
for cmd in cmds:
if cmd == 'R':
rev = not rev
elif cmd == 'D':
if not rev: #역순정렬이 아닐 경우
s += 1
else:
e += 1
if s+e <= n:
res = nums[s:n - e]
if not rev:
return '['+','.join(res)+']'
else:
return '['+','.join(res[::-1])+']'
else:
return 'error'
T = int(input())
for _ in range(T):
cmds = input()
n = int(input())
nums = input().rstrip()[1:-1].split(',')
if n==0: []
ans = solution(cmds, nums, n)
print(ans)
4.雑談
最近はプログラマーの問題だけを解いて、久しぶりに白俊の問題を解いたが、白俊は入出力形式をよく見て、ちょっと面倒な感じがした.外部IDEを使用する必要がありますか?とにかくこれを改善できれば白俊もいいんだけど….
Reference
この問題について([伯俊#5430]コミュニケーション), 我々は、より多くの情報をここで見つけました https://velog.io/@tenykim1109/백준-5430ACテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol