반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- springboot
- Elasticsearch
- Linux
- 리눅스
- 프로그래머스
- Java
- Kakao
- 캐시
- 자바
- 엘라스틱서치
- programmers
- IT
- 파이썬
- 도커
- 카카오
- 프로그래머스 #카카오 #IT #코딩테스트
- 코딩테스트
- Python
- 스프링부트
- 스프링
- 운영체제
- 알고리즘
- Spring
- 네트워크
- 백엔드
- 쿠버네티스
- DPDK
- docker
- 개발자
- C
Archives
- Today
- Total
저고데
[프로그래머스]롤케이크 자르기 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/132265
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드를 작성하기 위한 순서는 다음과 같다.
1. 배열의 크기가 백만개이므로 런타임 에러를 막기 위해 튜플와 딕셔너리를 사용한다.
2. 우선 딕셔너리에 모든 topping 원소와 그에 해당하는 갯수를 넣어준다.
3. 딕셔너리에서 원소를 하나씩 빼면서 튜플에 넣어준다.
4. 딕셔너리의 key의 갯수와 튜플의 길이가 같다면 answer+=1을 해준다.
def solution(topping):
answer = 0
first=set() #1번
second={}
for i in topping: #2번
if i not in second:
second[i]=1
else:
second[i]+=1
for i in topping:
second[i]-=1 #3번
if second[i]==0: #딕셔너리의 key 갯수로 중복 제거를 할 것이기 때문에 0이면 원소 자체를 삭제한다.
del second[i]
first.add(i)
if len(first)==len(second.keys()): #4번
answer+=1
return answer
문제의 정확성 난이도는 어렵지 않았으나 효율성을 찾는데 시간을 많이 썼던 것 같다.
덕분에 튜플이라는 개념을 잘 알게 되었다.
해당 문제처럼 중복 제거를 여러 번 해야할 때는 리스트 내의 set함수보다 튜플을 우선적으로 사용해야 시간복잡도가 줄어들 것 같다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]거리두기 확인하기 (0) | 2023.02.11 |
---|---|
[프로그래머스]택배 상자 (1) | 2023.02.11 |
[프로그래머스][3차]방금그곡 (0) | 2023.02.09 |
[프로그래머스]문자열 나누기 (0) | 2023.02.09 |
[프로그래머스]삼각 달팽이 (0) | 2023.02.09 |