Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코로나19
- 금융문자분석경진대회
- Real or Not? NLP with Disaster Tweets
- 우분투
- 파이썬
- 프로그래머스 파이썬
- 맥북
- 백준
- Docker
- ubuntu
- github
- leetcode
- 캐치카페
- Git
- 데이콘
- hackerrank
- PYTHON
- dacon
- 편스토랑 우승상품
- ChatGPT
- 자연어처리
- 더현대서울 맛집
- 편스토랑
- Baekjoon
- 프로그래머스
- AI 경진대회
- Kaggle
- SW Expert Academy
- gs25
- programmers
Archives
- Today
- Total
솜씨좋은장씨
[BaekJoon] 2506번 : 점수계산 (Python) 본문
728x90
반응형
코딩 1일 1문제! 오늘의 문제는 백준의 점수계산 입니다.
👨🏻💻 문제 풀이
이 문제는 연속적으로 답을 맞춘 경우를 고려하여 점수를 계산하는 문제입니다.
저는 이 문제를
문자열을 특정한 단어로 나누는 split 과
누적합을 구하는 itertools의 accumulate를 활용하여 문제를 풀었습니다.
N = int(input())
score_list = input().split()
먼저 총 문제의 개수 N 과
문제를 맞췄는지 안맞췄는지 정보를 담은 문자열을 입력 받습니다.
score_str = score_str.replace(" ", "")
문제를 맞췄는지 안맞췄는지정보를 담은 문자열에서 공백을 없애줍니다.
"1 0 1 1 1 0 0 1 1 0"
-> "1011100110"
그 다음 연속된 점수일때 얻을 수 있는 점수 목록을 accumulate로 구해줍니다.
accumulate_list = get_accumulate_list(N)
만약 N이 10이라고 하면
list(accumulate(range(10)))
-> [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
위와 같이 누적합 리스트가 만들어집니다.
score_str.split("0")
-> ['1', '111', '', '11', '']
여기서 score_str를 0으로 나누면 연속으로 맞춘 부분들이 나옵니다.
score_list = [accumulate_list[len(score)-1] for score in score_str.split("0") if len(score) != 0]
이제 누적합과 위에서 만든 연속으로 맞춘 부분들의 길이를 활용하여 맞춘 부분들의 점수를 구한다음
[1, 6, 3]
이 리스트의 합을 구하면 정답입니다.
👨🏻💻 코드 ( Solution )
from itertools import accumulate
def get_accumulate_list(N):
return list(accumulate(range(1, N+1)))
def calculate_score(score_str, N):
score_str = score_str.replace(" ", "")
accumulate_list = get_accumulate_list(N)
score_list = [accumulate_list[len(score)-1] for score in score_str.split("0") if len(score) != 0]
return sum(score_list)
if __name__ == "__main__":
N = int(input())
score_str = input()
print(calculate_score(score_str, N))
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[BaekJoon] 4504번 : 배수 찾기 (Python) (0) | 2022.06.24 |
---|---|
[BaekJoon] 13985번 : Equality (Python) (0) | 2022.06.23 |
[BaekJoon] 2592번 : 대표값 (Python) (0) | 2022.06.20 |
[BaekJoon] 3447번 : 버그왕 (Python) (0) | 2022.06.19 |
[BaekJoon] 10826번 : 피보나치 수 4 (Python) (0) | 2022.06.18 |
Comments