난이도 : D3
문제번호 : 6485
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
삼성시에 있는 5,000개의 버스 정류장은 관리의 편의를 위해 1에서 5,000까지 번호가 붙어 있다. |
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다. |
출력
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고 한 칸을 띄운 후, |
예시
입력 | 출력 |
1 |
#1 1 2 2 1 1 |
2. 문제풀이
딕셔너리를 이용하면 쉽게 풀 수 있는 문제였다. A와 B를 입력받아 그사이에 있는 값은 키값으로 딕셔너리 카운팅을 한다. 출력은 적혀있는 정류장을 기준으로 출력하며 거치지 않는 정류장이 있을 수 있으므로 get 함수를 이용하여 0을 디폴트로 주어 해결하였다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#D3 6485 삼성시의 버스 노선
#풀이 1
T = int(input())
for t in range(1, T+1):
N = int(input())
#결과 저장용 딕셔너리
result = {}
#그냥 나오면 전부다 카운팅
for i in range(N):
a, b = map(int, input().split())
for k in range(a, b+1):
result[k] = result.get(k, 0) + 1
#정류장 개수 입력받기
P = int(input())
#정류장 번호 입력받기
C_list = []
for _ in range(P):
C_list.append(int(input()))
print('#{} '.format(t), end='')
#딕셔너리에 저장된 정류장을 출력
for C in C_list:
print(result.get(C, 0), end=' ')
print()
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
적고 지우기 C++(SW Expert Academy) (0) | 2020.04.10 |
---|---|
조 만들기 C++(SW Expert Academy) (0) | 2020.04.09 |
정곤이의 단조 증가하는 수 Python(SW Expert Academy) (0) | 2020.04.07 |
세제곱근을 찾아라 Python(SW Expert Academy) (0) | 2020.04.06 |
의석이의 세로로 말해요 Python(SW Expert Academy) (0) | 2020.04.05 |
댓글