ログインしてください。
提出 #68247634
ソースコード 拡げる
import sys
from typing import List, Tuple
def find_matching_parentheses(s: str) -> List[Tuple[int, int]]:
"""
対応の取れた括弧列 s の各括弧の対応を求める。
:param s: 対応の取れた括弧列(文字列)
:return: 対応する括弧の位置ペア(1-indexed, 昇順ソート済み)
"""
stack: List[int] = []
pairs: List[Tuple[int, int]] = []
for i, ch in enumerate(s):
if ch == '(':
stack.append(i + 1) # 1-indexed
else:
if stack:
left: int = stack.pop()
pairs.append((left, i + 1))
# 出力条件: max(l, r) 昇順
pairs.sort(key=lambda x: max(x[0], x[1]))
return pairs
def main() -> None:
"""
標準入力を読み込み、対応括弧の位置を出力する。
"""
s: str = sys.stdin.read().strip()
result: List[Tuple[int, int]] = find_matching_parentheses(s)
output: List[str] = [f"{l} {r}" for l, r in result]
print("\n".join(output))
if __name__ == "__main__":
main()
提出情報
| 提出日時 | |
|---|---|
| 問題 | B51 - Bracket |
| ユーザ | myoshizumi |
| 言語 | Python (CPython 3.11.4) |
| 得点 | 1000 |
| コード長 | 1101 Byte |
| 結果 | AC |
| 実行時間 | 78 ms |
| メモリ | 33536 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1000 / 1000 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample_01 |
| All | random_01, random_02, random_03, random_04, random_05, random_06, random_07, sample_01 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| random_01 | AC | 19 ms | 10392 KiB |
| random_02 | AC | 19 ms | 10460 KiB |
| random_03 | AC | 19 ms | 10508 KiB |
| random_04 | AC | 22 ms | 11492 KiB |
| random_05 | AC | 49 ms | 21920 KiB |
| random_06 | AC | 78 ms | 33536 KiB |
| random_07 | AC | 77 ms | 33508 KiB |
| sample_01 | AC | 19 ms | 10464 KiB |