본문 바로가기
Programming/Python

[BAEKJOON] 백준 Python 4단계 1차원 배열 8958번/ 4344번 / OX퀴즈 / 평균은 넘겠지

by EunjiBest 2022. 4. 17.

[BAEKJOON] 백준 Python 4단계 1차원 배열 8958번/ 4344번 / OX퀴즈 / 평균은 넘겠지



8958번(OX퀴즈)

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

입력 : 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

출력 : 각 테스트 케이스마다 점수를 출력한다.


왜 점수를 저따위로 복잡하게 주는 것인가..
한참을 읽었다.. 우리말이 은근이 더 어렵단말이지

o가 연속 1개면 1점
o가 연속 2개면 2점
o가 연속 3개면 3점
.
.
.
이렇게 누적으로 계산되어 더해지는 것같다.

여러가지 방법을 생각해보았는데
최종적으로 생각해낸 법은 다음과 같다.

1. 테스트 케이스의 개수 N을 input한다.
2. N번만큼 test_case를 문자열로 input하여 리스트 형식으로 받는다.
3. test_case를 for문으로 돌린다.
4. for문을 돌고있는 test_case의 요소가 O라면,
socre에 1씩 더해주고, socre의 전체값도 누적해서 더해준다.
5. 그렇지 않으면 점수는 0이다.
6. 전체 누적값 출력.

N = int(input())

for i in range(N):
  test_case = list(input())
  score = 0
  sum_score = 0
  for t in test_case:
    if t == 'O':
      score += 1
      sum_score += score
    else:
      score = 0
  print(sum_score)





4344(평균은 넘겠지)

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.


입력 : 첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력 : 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.


출력을 해석해보자.

예를 들면
7명의 학생이 각각
100 95 90 80 70 60 50을 맞았다고 해보자.
평균을 계산해보니 71.428...이다.
그럼 평균을 넘은 사람은 7명중에 4명이다(100 95 90 80)
즉, 57.143%이다.


1. 테스트 케이스 개수 C input()
2. C번만큼 돌아가는 for문에 학생수(N)과 N명의 점수(socre)가 input() -> list로 받기
3. 학생수와 점수 쪼개기
3. 각 케이스별 평균 계산
4. 평균보다 큰 수 요소 +1씩 카운트하기
5. 비율구하기
6. 소수점3번째에서 끊어서 출력하기

C = int(input())

for i in range(C):
  case = list(map(int, input().split()))
  N = case[0]
  score = case[1:]
  avg = sum(score)/N
  cnt = 0

  for s in score:
    if s > avg:
      cnt += 1 
  rate = cnt/N * 100
  print(f'{rate:.3f}%')




이렇게해서 4단계 배열문제도 완료했다.
점점 쌓이다 보니깐 조금씩 복잡해져서 시간이 많이 걸린다.
막상 풀고보면 시간 쓸 문제들이 아니라서 현타가 온다..ㅠㅠ


5단계 함수와, 6단계 문자열까지는 기본적인거라
호다닥 끝내고 싶은데 맘처럼 쉽지 않은 것같다.ㅎ

일단 다음 포스팅은 5단계 함수를 풀어보도록 하겠다.


반응형

댓글