일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소프트웨어 아카데미
- 게르
- 교환학생
- 헬스
- 담슈타트
- 코로나
- 백준
- 칭기스칸 동상
- 월드프렌즈 ICT 봉사단
- 초원
- 파이썬
- 여행
- Python
- 울란바토르
- SWEA
- algorithm
- 몽골요리
- 몽골 헬스장
- 칭기즈칸
- 독일
- 월드프렌즈
- 테를지
- 알고리즘
- 몽골
- LG글로벌챌린저
- 테를지국립공원
- 아부다비
- 한 줄로 서기
- 몽골 고기
- ICT봉사단
- Today
- Total
맛있는물회
[맛있는물회] <백준 알고리즘> 1107번 "리모컨" 본문
문제 조건
수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다.
리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다.
수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오.
수빈이가 지금 보고 있는 채널은 100번이다.
Input
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 주어지며, 같은 버튼이 여러 번 주어지는 경우는 없다.
Output
첫째 줄에 채널 N으로 이동하기 위해 버튼을 최소 몇 번 눌러야 하는지를 출력한다.
생각한 아이디어
브루트포스 중에 브루트 포스 중에 부르트 포스이다.
솔직히 2초라도 이 코드가 실행가능할지 의문이 들 정도로 많은 시간을 요하는 코드인데 이렇게 푸는 것같다.
먼저 처음에는 중복순열의 길이를 target channal 의 길이만큼 만 돌았는데 생각해보니 그게 아닐 수 도있다는 것...
그래서 최대값인 500000의 길이 6부터 1까지 모든 길이를 기준으로 하여 중복순열을 돌았다.
고장난 채널을 제외한 채널값의 리스트를 기준으로 중복 순열을 수행하여서 모든 값의 비교를 진행했다!
쉽지않다!
소스코드
#1107 리모컨
from itertools import product
if __name__ == "__main__":
num=int(input())
m=int(input())
if m!=0:
arr=list(map(int,input().split()))
else:
arr=[]
cur = 100
answer=abs(num-cur)
channel=[i for i in range(0,10) if i not in arr]
for i in range(6,0,-1):
for val in product(channel,repeat=i):
tmp = ''.join(list(map(str,val)))
tmp=int(tmp)
length=len(str(tmp))
if answer>(length+abs(num-tmp)):
answer=(length+abs(num-tmp))
print(answer)
*파이썬 문법 정리
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] [파이썬] <백준 알고리즘> 1963번 "소수 경로" (0) | 2020.05.31 |
---|---|
[맛있는물회] [파이썬] <백준 알고리즘> 1916 번 "최소비용 구하기" (0) | 2020.05.31 |
[맛있는물회] <백준 알고리즘> 1699번 " 제곱수의 합" (1) | 2020.05.29 |
[맛있는물회] <백준 알고리즘> 1654번 "랜선 자르기" (0) | 2020.05.28 |
[맛있는물회] <백준알고리즘> 1406번 "에디터" 파이썬 (0) | 2020.05.28 |