https://www.acmicpc.net/problem/1107
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이
www.acmicpc.net
import sys
input = sys.stdin.readline #파이썬에서 input 여러줄을 입력하기 위한 sys.stdin.readline
target = int(input()) #수빈이가 이동하려고 하는 채널
n = int(input()) #고장난 버튼의 개수
broken = list(map(int, input().split())) #어떤버튼이 고장났는지 input.split로 입력된 수를 잘라서 map으로 중복 없애고( 같은 버튼이 여러 번 주어지는 경우는 없다.) list안에 담음
# 현재 채널에서 + 혹은 -만 사용하여 이동하는 경우
min_count = abs(100 - target) #수빈이가 현재 보고 있는 채널 - 수빈이가 이동하려는 채널의 절대값
for nums in range(1000001): #채널의 개수는 무한이므로 채널의 개수범위를 500000X2로 1000000으로 잡고 (리모컨에는 버튼이 0부터 9까지 숫자가 있으므로 0~9의 수를 조합하되 조합 범위를 100000으로 잡음)
nums = str(nums) #0~100000 총 채널을 int형에서 string으로 형변환시킨후 nums 리스트에 넣어줌 num = [0~100000] 0~100000까지의 모든 채널의 수를 list에 넣고
for j in range(len(nums)): #0~100000채널을 수빈이가 0~9숫자 버튼을 0부터 순차적으로 입력해서
# 각 숫자가 고장났는지 확인 후, 고장 났으면 (0~100000채널에서 고장난 버튼이 있는 채널은 리모컨으로 입력 불가능) break
if int(nums[j]) in broken:
break
# 고장난 숫자 없이 마지막 자리까지 왔다면 min_count 비교 후 업데이트
elif j == len(nums) - 1:
min_count = min(min_count, abs(int(nums) - target) + len(nums)) #현재 클릭한 버튼횟수의 최소값과 현재 수빈이가 누른 버튼의 자리수 - 수빈이가 목표로하는 채널 (추가적으로 + or -버튼을 수빈이가 눌러야 하는 횟수) + 수빈이가 누른 버튼의 자리수의 개수
print(min_count) #최소값 출력
1.
[Python 문법] 파이썬 입력 받기(sys.stdin.readline)
파이썬으로 코딩 테스트를 준비한다면, 반드시 알아야 할 입력방식인 sys.stdin.readline()에 대한 정리 입니다.
velog.io
input을 한줄로 입력받으면 input()을 사용하지만 여러줄을 입력받으면 sys.stdin.readline()을 사용한다 Runtime error 방지용
2.
02. 문자열 자료형(str)
앞서 `print('Hello World')`를 통해서 `Hello World`를 출력하는 실습을 진행한 바 있습니다. 파이썬과 같은 프로그래밍 언어에서는 글자를 문자열(stri…
wikidocs.net
nums int형을 str(num)으로 string형으로 변환후 nums 배열에 넣어줌
3.
https://www.freecodecamp.org/korean/news/python-for-loop-for-i-in-range-example/
Python의 For 반복문 - For i in Range 예제
반복문은 모든 프로그래밍 언어에서 주요 제어문 중 하나이며 Python에서도 마찬가지입니다. 이번 글에서는 Python의 range() 함수와 함께 for 반복문을 사용한 몇 가지 예제를 살펴보겠습니다. Python
www.freecodecamp.org
in range(100001) i = 0 i<100001 i++
4.
https://dowtech.tistory.com/43
파이썬 if ~ not in의 사용
파이썬 문법 중 if~in / if ~ not in 에 대한 내용이다. 항상 헷갈리는 부분이라서 정리해둔다. (0) 기본적인 사용방법은 다음과 같다. if A in B : B안에 A가 있으면 참(true)이다. if A not in B : B안에 A가 없
dowtech.tistory.com
예제입력 1
5457
3
6 7 8
target = 5457
n = 3
broken={6,7,8}
0~100000까지 채널을 돌리면서 채널번호에 6 7 8 번호가 있는 경우 break 부서진 번호임으로 입력안됨
'Python' 카테고리의 다른 글
파이썬 자료형 (0) | 2023.08.22 |
---|---|
백준 10828 Python (0) | 2023.08.22 |
백준 1476 Python (0) | 2023.08.08 |
백준 3085 Python (0) | 2023.08.05 |
백준 2309 파이썬 (0) | 2023.08.03 |