defisValid(s):# Write your code here
orig_list = list(s)
unique_list = list(set(s))
nums = []
for i in unique_list:
nums.append(orig_list.count(i))
nums.sort() #ascending
ifnum_1= [i for i in nums]
ifnum_1[-1] = ifnum_1[-1]-1if (len(set(nums))==1)| (len(set(ifnum_1))==1):
return"YES"elif (len(set(nums))==2)&nums.count(1)==1:
return"YES"else:
return"NO"
의도했던 건 반복문을 최대한 적게 쓰는 거였는데 결국 for 파티가 되어버렸다.. 조금 지저분하게 풀었다는 느낌이 없지 않지만, 아무튼 포인트는 문자열 내 개수를 세었을 때 그 수가 모두 같거나, 개수가 가장 많은 수를 하나 뺐을 때 각 문자 개수가 다 같아진다면 valid로 판정하는 것. 이때 예외 상황은 1개짜리 문자가 하나 있다면 그 문자를 뺐을 때 valid string인지 판정하는 경우.