반응형
문제
입력
출력
첫 번째 줄에 문제에서 설명한 규칙에 따라 계산한 점수를 출력합니다.
풀이
# 카드의 개수
n = int(input())
# N개의 카드
card = list(map(int, input().split()))
card.sort() # 카드 오름차순 정렬
answer = 0 # 정답(점수)
arr = [card[0]] # 그룹화하여 담을 리스트
tmp = card[0] # 연속하는 수 인지 판별하기 위한 변수
for i in range(n):
if i > 0:
if card[i]-tmp != 1: # 만약 이전의 수와 차가 1이 아니라면
answer += arr[0] # 점수에 그룹의 가장 작은 수를 더하고
arr = [] # 그룹을 초기화
tmp = card[i] # 현재 수를 tmp에 담고
arr.append(card[i]) # 그룹에 현재 수를 추가
if i == n-1: # 마지막 요소라면
answer += arr[0] # 현재 그룹의 가장 작은 수를 더함
print(answer)
노 땡스!는 3부터 35까지의 정수가 쓰인 카드를 이용해 플레이할 수 있는 보드게임
1. 정수들은 오름차순으로 정렬한 뒤, 이웃한 수끼리의 차가 1인 구간들로 그룹화
2. 각 그룹별로 가장 작은 수를 모든 합한 값이 점수
예를 들어 가지고 있는 카드가 [6, 7, 10, 12, 13, 14, 15, 20, 21, 22] 라면
[6, 7] [10] [12, 13, 14, 15] [20, 21, 22] 이렇게 총 4개의 그룹으로 나뉘고
점수는 6+10+12+20 = 48점
card에 입력받아 오름차순으로 정렬하고,
그룹화 하는 것을 arr로 리스트를 만들어 tmp에 현재 지나가는 요소를 저장해 둔 다음,
다음 요소에서 이전과 차이가 1인지 확인 한 뒤, 1이 아니라면 arr는 초기화 하고, 현재 arr의 가장 첫번째 요소를 점수에 추가한다.
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] 보드게임컵 C번/Bronze I #27161 크레이지 타임 (0) | 2023.01.24 |
---|---|
[백준/Python] 보드게임컵 B번/Bronze II #27160 할리갈리 (0) | 2023.01.24 |
[백준/Python] Silver III #4375 1 (0) | 2023.01.13 |
[백준/Python] Silver IV #1120 문자열 (0) | 2023.01.12 |
[백준/Python] Gold V #2447 별 찍기 - 10 (0) | 2023.01.12 |
Comment