Study/문제풀이
[hackerrank] Sherlock and the Valid String (Python)
RUMJIE 럼지
2023. 6. 21. 15:43
728x90
문제 (링크)
- 주어진 문자열의 각 알파벳 개수가 모두 같으면 YES 리턴
- 문자열에서 문자 하나를 뺀 뒤 각 알파벳 개수가 모두 같으면 YES 리턴
- 이 외의 경우 문자열은 not valid, NO 리턴
파이썬 풀이
def isValid(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]-1
if (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인지 판정하는 경우.
백준이었다면 시간초과로 고생 많이 했을 것 같음 ㅎㅎ!
728x90