반응형
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 |
Tags
- k겹 교차검증
- 자율성장 인공지능
- 광고삽입 파이썬
- 프로그래머스광고삽입
- MLE
- 딥러닝
- 메뉴리뉴얼 파이썬
- 비트마스킹
- 2차원동전뒤집기
- 딥러닝학습
- 머신러닝 학습 검증
- 카카오 메뉴리뉴얼
- 프로그래머스 누적합
- 인공지능 경진대회
- 모델경량화
- 딥러닝 가중치 갱신
- 프로그래머스 2차원동전뒤집기 파이썬
- 데이터축소
- 인공신경망 학습
- 프로그래머스 스타수열
- 카카오 코테 메뉴리뉴얼
- 프로그래머스 2차원동전뒤집기
- 과적합방지
- 딥러닝파라미터
- 스타수열 파이썬
- 로지스틱 최대우도
- AI경량화
- 확률과우도
- 스타수열
- 프로그래머스
Archives
- Today
- Total
머신러닝 개발자의 러닝머신
[프로그래머스-마법의 엘리베이터] (Python) 본문
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
유형
- 관찰 & 규칙찾기
아이디어
- 올림을 하면 하나 커진 윗자리를 다시 0으로 만들기 위해 횟수가 +1 추가되지만
내림을 수행하는 것보다 올림을 수행하는 횟수가 2보다 작으므로 올림이 더 유리함 (따라서, 6이상인 경우는 무조건 올림이 유리함) - 그렇지 않은 4보다 작거나 같은 경우는 내림이 무조건 유리함
- 5인 경우는 윗자리 수에 따라 내림이 유리한 경우, 올림이 유리한 경우가 달라짐
문제 풀이
- 일의 자리 숫자부터 확인하면서 5보다 작으면 내림, 5보다 크면 올림, 5인 경우는 그 윗자리에 따라 올림 or 내림 여부 달라짐
- 5인 경우, 윗자리 숫자가 5보다 크거나 같으면 올림, 윗자리 숫자가 5보다 작으면 내림 - 올림을 수행하는 경우, 윗자리가 9면 0이 되고 다시 윗자리 수로 올림이 일어나기 때문에 윗자리가 9가 아닐 때까지 올림을 수행한다.
(윗자리가 없는데 올리는 경우는 queue 에 popleft 로 윗자리수 1추가해준다)-> 이것 때문에 큐 사용
코드
from collections import deque
def solution(storey):
answer = 0
storey = str(storey)
n = len(storey)
lst = deque([int(storey[i]) for i in range(n)])
while lst:
num = lst.pop()
if num==0:
continue
if num>=6: #올림
answer += 10-num
if not lst: #앞지리 수가 없는 경우 1추가(올림한 새로운 자리 수)
lst.appendleft(1)
continue
for j in range(len(lst)-1, -1, -1): #9가 아닌 수까지 올림 수행, 올릴 자리 없으면 1추가하여 올림해준다
if lst[j] == 9:
lst[j] = 0
if j ==0:
lst.appendleft(1)
break
else:
lst[j]+= 1 #9가 아닌 수에 올림 수행, break
break
elif num ==5: #앞자리 수 보고 판단하기
answer += 5
if not lst: #윗자리 수가 없으면 고려 x
break
if lst[-1]>=5: #윗자리 수가 5보다 크거나 같으면 올림/내림은 그냥 answer += 5 이미 갱신했으므로 더 고려 안해도 됨
for j in range(len(lst)-1, -1, -1):
if lst[j]==9:
lst[j] = 0
if j ==0:
lst.appendleft(1)
break
continue
else:
lst[j]+= 1
break
else: #5보다 작으면 무조건 내림
answer += num
return answer
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스: 문자열 나누기](Python) (0) | 2023.04.12 |
---|---|
[프로그래머스-가장 가까운 같은 글자] (Python) (0) | 2023.04.12 |
[2023 KAKAO TECH INTERNSHIP 코딩 테스트 공부] (Python) (0) | 2023.04.12 |
[프로그래머스: 시소 짝꿍] (Python) (0) | 2023.04.11 |
[프로그래머스: 인사고과] (Python) (0) | 2023.04.11 |