일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 배열
- 페이코 추천인코드
- 플러터
- programmers
- 페이코 친구코드
- php 프로그래밍 입문 솔루션
- 자바 스프링
- php
- php 프로그래밍 입문 문제풀이
- 백준
- spring
- 페이코 추천인
- 페이코 초대코드
- php 프로그래밍 입문 연습문제
- C
- Flutter
- 파이썬
- 자바
- php 프로그래밍 입문 3판
- Java
- C언어
- 최단 경로
- php 프로그래밍 입문
- 스프링
- php 프로그래밍
- JAVA SPRING
- SWEA
- 플러터 개발환경 설정
- php 프로그래밍 입문 예제
- 한정 분기
Archives
- Today
- Total
11-07 11:40
ImJay
[파이썬/Python] 백준 1107번 리모컨 본문
반응형
[파이썬/Python] 백준 1107번 리모컨
문제
수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다.
리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다.
수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오.
수빈이가 지금 보고 있는 채널은 100번이다.
입력
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 주어지며, 같은 버튼이 여러 번 주어지는 경우는 없다.
출력
첫째 줄에 채널 N으로 이동하기 위해 버튼을 최소 몇 번 눌러야 하는지를 출력한다.
예제 입력
5457
3
6 7 8
예제 출력
6
풀이
브루트포스
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
broken = list(map(int, input().split()))
min_count = abs(100 - n) # 초기 최소 버튼 눌린 횟수 (100에서 N으로 바로 이동하는 경우)
for nums in range(1000001): # 0부터 1000000까지의 숫자를 대상으로 순회
num = str(nums)
for i in range(len(num)): # 숫자 num의 각 자리수를 확인
if int(num[i]) in broken: # 고장난 버튼이라면 중단
break
else: # for 루프가 완전히 돌았을 때 (고장난 버튼이 없는 경우)
min_count = min(min_count, abs(int(num) - n) + len(num)) # 최소 횟수 갱신
print(min_count)
채널 N으로 이동하기 위해 시도하는 번호는 0부터 1000000까지이므로 O(1000000)의 시간 복잡도가 소요된다.
각 번호마다 숫자의 각 자리를 확인하여 고장난 버튼인지 판별하는 루프가 있다. 이 루프의 시간 복잡도는 숫자의 자릿수인 O(log N)이다.
따라서 전체 코드의 시간 복잡도는 O(1000000 * log N)이 된다.
반응형
'Solved.ac - Python > CLASS 3' 카테고리의 다른 글
[파이썬/Python] 백준 9375번 패션왕 신해빈 (1) | 2023.12.22 |
---|---|
[파이썬/Python] 백준 9019번 DSLR (0) | 2023.08.10 |
[파이썬/Python] 백준 7662번 이중 우선순위 큐 (0) | 2023.08.08 |
[파이썬/Python] 백준 7569번 토마토 (0) | 2023.08.07 |
[파이썬/Python] 백준 1074번 Z (0) | 2023.06.10 |
Comments