매일매일 (Everyday)
[BOJ] - 1차원 배열 단계-(2) - Python
apdo
2021. 11. 29. 16:30
8958: OX 퀴즈
# 8958: OX퀴즈
import sys
T = int(input())
answer = []
X_index = [0]
for _ in range(T):
result = list(map(str, sys.stdin.readline()))
for i in range(len(result)-1):
if result[i] == 'X' :
X_index.append(i)
print(result)
print(X_index)
# 다시 풀어보기
import sys
T = int(input())
score = 0
for _ in range(T):
result = list(map(str, sys.stdin.readline()))
for i in range(len(result)-1) :
if result[i] == 'O' :
score += 1
else :
score += 0
##
'''아이디어 : 문제의 점수는 연속된 O의 개수가 되고, X가 나오면 1로 초기화 되는게 핵심이다.'''
'''총합 스코어 변수, O가 나오면 증가하는 값 변수를 생성'''
###
import sys
T = int(input())
score = 1
final_score = 0
for _ in range(T):
result = list(map(str, sys.stdin.readline()))
for answer in result :
if answer == 'O' :
final_score += score
score += 1
if answer == 'X':
score = 1
print(final_score)
####
import sys
T = int(input())
for _ in range(T):
result = list(map(str, sys.stdin.readline()))
score = 1
final_score = 0
for answer in result :
if answer == 'O' :
final_score += score
score += 1
else :
score = 1
print(final_score)
"####" 이후가 최종 답안입니다.
백준 코딩 시작 이후 처음으로 시간이 걸렸네요. 점점 어려운걸 풀면서 생각과 시간을 많이 요하는 것 같습니다.
아이디어는 다음과 같습니다.
- 문제의 점수는 연속된 'O'의 개수가 되고, X가 나오면 부여할 점수를 1로 초기화하는 것이 핵심입니다.
- 총합 스코어 변수를 따로 지정해서 'O'가 나오면 증가하는 값 변수를 생성합니다.
부여하는 점수가 1점씩 증가하다보니 총합 점수 변수를 새로 지정하는게 핵심이였다고 생각합니다. 막상 코드를 다시 보니까 쉬웠던걸 왜그리 고민했나싶네요.
처음 틀렸던 아이디어는 'X'가 있는 곳을 슬래시로 생각하여 'O' 덩어리들을 리스트안에 리스트로 넣고 점수를 나중에 계산하려고 생각했는데, 굳이 그럴 필요는 없고 점수를 처음부터 세는 것이 코드도 더 자연스럽더라고요.
4344: 평균은 넘겠지
num = int(input())
for _ in range(num):
scores = list(map(int, input().split()))
mean = sum(scores[1:]) / scores[0]
cnt = 0
for i in scores[1:]:
if i > mean:
cnt += 1
per = (cnt / scores[0]) * 100
print('%.3f' % per + '%')
이 문제에서는 평균을 계산할때 어떻게 코드를 짰는지 유심히 보는게 핵심입니다.
그리고 소수점 셋째자리까지 출력을 기존에 해왔던 방식과 다르게 풀었습니다.
주로 round( ) 를 사용했는데, 지난번에 배웠던 format( ) 방법으로 풀어봤습니다.