https://school.programmers.co.kr/learn/courses/30/lessons/132265
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
초기구현
topping 전체를 돌며 왼쪽과 오른쪽을 나누어 매번 set형태의 값을 만들어주었다.
정확성은 맞지만.. 시간초과가 많이 되었음ㅠ (아마 매번 set을 만들어 해결하다 보니 그런듯 합니다)
def solution(topping):
answer = 0
end = len(topping)
for i in range(len(topping)):
left=set(topping[0:i])
right = set(topping[i:end])
print(left, right)
if len(left) == len(right):
answer +=1
print(answer)
return answer
solution
매번 set을 만드는게 많은 시간을 잡는다는걸 알게되었다.
그래서 기준점의 오른쪽과 왼쪽의 토핑가지수를 나눌 방법을 찾다가 고안해 낸 방법
전체를 딕셔너리로 변환한 뒤, 기준점을 옮기면서 빈 set배열에 값을 넣으며 토핑가지수가 일치한지 아닌지 확인하면 된다!
def solution(topping):
answer = 0
dic = dict()
for i in range(len(topping)):
if topping[i] not in dic:
dic[topping[i]] = 1
else:
dic[topping[i]] +=1
set_dic = set()
for i in range(len(topping)):
dic[topping[i]] -=1
set_dic.add(topping[i])
if dic[topping[i]] ==0:
dic.pop(topping[i])
if len(dic) == len(set_dic):
answer +=1
return answer
'Algorithm > programmers' 카테고리의 다른 글
[파이썬]programmers: 땅따먹기 (0) | 2022.12.09 |
---|---|
[파이썬]programmers: 주식가격 (1) | 2022.12.09 |
[파이썬]programmers: 점 찍기 (0) | 2022.12.07 |
[파이썬]programmers: 완주하지 못한 선수 (1) | 2022.12.05 |
[JS]programmers: 두 개 뽑아서 더하기 (0) | 2022.11.25 |
댓글