Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- pip install
- 오블완
- 하체운동
- 티스토리챌린지
- 덤벨운동
- pytorch
- Knowledge Tracing
- 영화 비평
- 디버깅
- 연구 시작
- PT 운동
- 코테 공부
- 개발자
- 다이어트
- github
- 건강
- 바디프로필
- 바프준비
- 개인 운동
- 코테준비
- 암풀다운
- 코딩테스트
- 운동
- 코드
- 논문 리뷰
- 체스트프레스
- 데드리프트
- 프로그래머스
- 개인 피티
- 개인 PT
Archives
- Today
- Total
치즈의 AI 녹이기
[코테 공부] 프로그래머스 보석 쇼핑 본문
이 문제는 정확성과 효율성을 둘 다 평가하는 문제였다.
생각보다 금방 풀어서 제출했는데, 정확성은 100% 정답, 효율성은 66.6% 정답.. 아쉬운 결과
해당 결과의 풀이는 아래와 같다.
def solution(gems):
# 결국엔 배열 끝까지 탐색해보아야 함.
gem_num = len(set(gems))
gem_index = dict() # 등장한 가장 나중 인덱스를 저장함.
# gem_set = set()
answer = []
min_len, min_index, max_index = 1000000, len(gems), 0
for index, gem in enumerate(gems):
#보석 인덱스 업데이트
gem_index[gem] = index+1
# print(gem_index, gem_set)
# 셋 내 모든 종류가 포함되는 지 확인
if len(gem_index) == gem_num:
term_len = max(gem_index.values())-min(gem_index.values())
if term_len < min_len:
min_len = term_len
answer = [min(gem_index.values()), max(gem_index.values())]
# print(answer, min_len)
return answer
위 코드에서 줄일 수 있는 부분은 일단 max, min을 계산하는 부분이라고 생각하여
그 부분을 개선해보...려고 했으나 min 값을 구하는 것을 대체할 수 있는 방법이 생각이 나지 않았다;
검색을 해보니 투포인트 방법을 활용해보라고 하여, 다시 구현해보았다.
def solution(gems):
# 결국엔 배열 끝까지 탐색해보아야 함.
gem_num = len(set(gems))
gem_index = {gems[0]:1} # 등장한 가장 나중 인덱스를 저장함.
s, e = 0, 0
answer = [0, len(gems)-1]
while s<len(gems) and e<len(gems):
#아직 보석이 그룹 내 모두 존재하지 않을 경우,
if len(gem_index) != gem_num:
e += 1
if e == len(gems): break
if gems[e] not in gem_index:
gem_index[gems[e]] = 1
else:
gem_index[gems[e]] += 1
#보석이 그룹 내 모두 존재할 경우,
else:
#더 짧은 범위일 경우, 업데이트
if e-s < answer[1]-answer[0]:
answer = [s, e]
if gem_index[gems[s]] == 1:
del gem_index[gems[s]]
else:
gem_index[gems[s]] -= 1
s += 1
answer[0] +=1
answer[1] +=1
return answer
'인공지능 대학원생의 생활 > 동료 코드 따라잡기' 카테고리의 다른 글
[코테 공부] 프로그래머스 자물쇠와 열쇠 (0) | 2023.04.27 |
---|---|
[코테 공부] 프로그래머스 주차 요금 계산 (0) | 2023.04.26 |
[코테 공부] 프로그래머스 택배 배달과 수거하기 (0) | 2023.04.26 |
[코테 공부] 프로그래머스 이모티콘 할인 행사 (0) | 2023.04.25 |
[네이버 코테 준비] 알고리즘 스터디 D - 1 (0) | 2023.04.14 |