結果
| 問題 | 
                            No.517 壊れたアクセサリー
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2017-08-04 21:17:53 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 32 ms / 2,000 ms | 
| コード長 | 1,702 bytes | 
| コンパイル時間 | 188 ms | 
| コンパイル使用メモリ | 12,800 KB | 
| 実行使用メモリ | 11,008 KB | 
| 最終ジャッジ日時 | 2024-10-11 20:56:58 | 
| 合計ジャッジ時間 | 1,605 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 15 | 
ソースコード
# -*- coding: utf-8 -*-
class Stone:
    def __init__(self, left, right):
        self.left = left
        self.right = right
N = int(input())
A = [''] * N
for i in range(N):
    A[i] = input()
M = int(input())
B = [''] * M
for i in range(M):
    B[i] = input()
stone_dict = {}
#はじめに全文字の追加
for i in range(N):
    segment = A[i]
    for character in segment:
        stone = Stone('','')
        stone_dict[character] = stone
#結城君の断片のチェック
for i in range(N):
    segment = A[i]
    for j in range(len(segment)):
        me = segment[j]
        left = ''
        right = ''
        if j-1 >= 0:
            left = segment[j-1]
        if j+1 < len(segment):
            right = segment[j+1]
        stone_dict[me].left = left
        stone_dict[me].right = right
#幸田さんの断片のチェック
for i in range(M):
    segment = B[i]
    for j in range(len(segment)):
        me = segment[j]
        left = stone_dict[me].left
        right = stone_dict[me].right
        if j-1 >= 0:
            left = segment[j-1]
        if j+1 < len(segment):
            right = segment[j+1]
        stone_dict[me].left = left
        stone_dict[me].right = right
'''
for key in stone_dict:
    print('me:' + key + ',left:' + stone_dict[key].left + ',right:' + stone_dict[key].right)
'''
output_string = ''
for key in stone_dict:
    if stone_dict[key].left == '':
        output_string += key
        nc = stone_dict[key].right
        while len(output_string)<len(stone_dict) and nc!='':
            output_string += nc
            nc = stone_dict[nc].right
        break
if len(output_string) == len(stone_dict):
    print(output_string)
else:
    print(-1)