링크 : https://www.acmicpc.net/problem/11723
2979번: 트럭 주차
첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장
www.acmicpc.net
- 문제
- 소요시간: 28분 39초(초과)
- 설계하기(접근방법)
1. 입력받기
연산의 수를 입력받고
그 만큼 for문을 반복해준다
명령어를 입력받을 때 주의사항
항상 변수 2개를 입력받는 것이 아니기 때문에 경우를 나누어 생각해야 한다
일단 str로 통째로 입력을 받은 후
split()함수를 통해 개행 문자로 구분하여 원소를 나눈다
변수가 하나인 경우 리스트의 [0]번째 원소로 str를 사용해주고
2개인 경우에는 [0]번째를 str로, [1]번째는 int로 바꿔서 활용한다
2. 구현하기
그 다음의 명령어는 구현이 쉬운 편이므로
remove와 append를 적절히 활용하여 명령어를 수행해준다
3.출력하기
check 명령어가 들어온 경우 출력한다
- 코드(출력)
import sys
n = int(input())
s = []
for i in range(n):
line = sys.stdin.readline().rstrip()
line = line.split()
if len(line) == 1:
func = line[0]
else:
func = line[0]
x = line[1]
x = int(x)
if func == 'add':
if x in s:
pass
else:
s.append(x)
if func == 'remove':
if x in s:
s.remove(x)
else:
pass
if func == 'check':
if x in s:
print(1)
else:
print(0)
if func == 'toggle':
if x in s:
s.remove(x)
else:
s.append(x)
if func == 'all':
s = [i for i in range(1, 21)]
if func == 'empty':
s = []
- 얻어갈 부분
1. 요구 사항을 좀 더 꼼꼼히 살펴보아야겠다
입력 시 항상 input().split()이 아닌 string 하나만 입력되는 경우가 존재하기 때문에 경우의 수를 나누어주어야 했다
2. remove() 메서드는 remove할 변수가 존재하지 않을경우 runtimeerror를 날린다. 이 경우도 if,else로 나누어 코드를 작성했어야 한다
3. 알고리즘 풀이가 오랜만이어서 입력의 수가 많은 경우
import sys후
sys.stdin.readline()을 사용해주어야 테스트를 통과할 수 있다.
'알고리즘(백준) > 구현' 카테고리의 다른 글
[알고리즘/구현] 9017번 : 크로스 컨트리 - python (0) | 2023.12.27 |
---|---|
[알고리즘/구현] 10431번 : 줄세우기 - python (0) | 2023.12.26 |
[알고리즘/구현] 2979번 : 트럭주차 - python (0) | 2023.12.26 |
[알고리즘/구현] 18311번 : 왕복 - python (1) | 2023.12.20 |
[알고리즘/구현] 16926번 : 배열 돌리기 - python (0) | 2023.05.09 |