[プログラマー]Programmers 2020 KaKako Internジュエリーショッピングパイソン
12458 ワード
#質問元
https://programmers.co.kr/learn/courses/30/lessons/67258
#解答1
def solution(gems):
set_gem = set(gems)
length = len(set_gem)
gnqh = []
dict1 = dict()
for i in range(len(gems)):
try:
del dict1[gems[i]]
except:
pass
dict1[gems[i]] = i
if len(dict1) == length:
vl = list(dict1.values())
if vl[-1] == vl[0]:
return vl[0]+1, vl[-1]+1
else:
gnqh.append([vl[-1]-vl[0], vl[0]+1, vl[-1]+1])
gnqh.sort()
return gnqh[0][1], gnqh[0][2]
#print( solution(["DIA", "RUBY", "RUBY", "RUBY", "RUBY", "EMERALD", "SAPPHIRE", "DIA"]) )
#print( solution(["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"]) )
# print( solution(["AA", "AB", "AC", "AA", "AC"]) )
# print( solution(["XYZ", "XYZ", "XYZ"]) )
# print( solution(["ZZZ", "YYY", "NNNN", "YYY", "BBB"]) )코드를 입력하세요
正確性はすべて通過する15番testcaseだけは通過できません.(合計95.6点)
#解答2
from collections import defaultdict
def solution(gems):
set_gem = set(gems)
length = len(set_gem)
dict1 = defaultdict(int)
a1, a2 = 0, 999999999
for i in range(len(gems)):
if dict1[gems[i]] != 0:
del dict1[gems[i]]
dict1[gems[i]] = i + 1
else:
dict1[gems[i]] = i + 1
if len(dict1) == length:
vl = list(dict1.values())
if vl[-1] == vl[0]:
return vl[0], vl[-1]
else:
if a2-a1 > vl[-1]-vl[0]:
a1 = vl[0]
a2 = vl[-1]
return a1,a2
#print( solution(["DIA", "RUBY", "RUBY", "RUBY", "RUBY", "EMERALD", "SAPPHIRE", "DIA"]) )
#print( solution(["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"]) )
# print( solution(["AA", "AB", "AC", "AA", "AC"]) )
# print( solution(["XYZ", "XYZ", "XYZ"]) )
# print( solution(["ZZZ", "YYY", "NNNN", "YYY", "BBB"]) )
精度と効率はいずれも通過(100点)# review
効率を高めるために、私たちは時間を短縮する方法を考えています.その結果、以下の3つの項目を修正しました.結果は100点
try - except
-> if else문
dict
->defaultdict(int)
//try문
使用しないためgnph(후보리스트)
乙for문
後にリストソートを行うよりも、for
文内a1,a2
更新方向.Reference
この問題について([プログラマー]Programmers 2020 KaKako Internジュエリーショッピングパイソン), 我々は、より多くの情報をここで見つけました https://velog.io/@ba159sal/프로그래머스-Programmers2020-Kakao-Intern보석-쇼핑파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol