백준 4단계 - 7, 8 번

LEE'S·2022년 11월 2일
0

백준

목록 보기
4/27

7번 (1546번)

cnt = int(input())
scores = list(map(int,input().split()))

m = max(scores)
total = 0

for i in scores :
  i = i/m*100
  total = total + i

print(total/cnt)

저번에 알게되었던 map(int,input().split()) 을 활용했다. 저 map 은 iterator 로 반환되기 때문에 리스트로 받고 싶으면 list()를 활용해야 한다.

8번 (8958번)

cnt = int(input()) 
result_arr = []

for i in range(cnt) :
  q = input()
  arr = [j for j in q]
  
  score = 0  # 각각의 점수
  result = 0  # 점수 총합
  
  for n in range(len(arr)) :
    if arr[n] == "O" :
      score += 1
      result = result + score 

    else : 
      score = 0
    
  result_arr.append(result)

for r in result_arr :
  print(r)

1) 문자열을 배열로 각각 넣는 것은 [j for j in q] 이런 식으로 표현했다.

근데 이것보다 더 간편하게 할 수 있는 방법은 q=list(input()) 으로 하면 되는 것 같다.... 왜 이 생각을 못했지..

2) 나 같은 경우에는 하나의 퀴즈 결과에서 각각 답의 점수를 score , 그 점수들을 합친 합계를 result 라고 표현했다. (다 풀고 인터넷에서 몇몇 정답 코드 봤는데 보통 이런식으로 한듯..!)

3) 처음에 틀렸는데 오답인 이유가.. 나중에 print() 를 for i in range(cnt) 안에서 해버려서 그렇다. 저 for 문 안에 print 문을 넣으면 input 하나 하면 바로 print 되는 식이니까..! (앞으로는 주의하자)

4) 또 초반에 틀렸던 부분은 if arr[n] == "0" 부분이다. 여기서 순서가 중요한데 처음에는 score 을 1로 초기화하고 result = result + score 한다음 score 을 하나씩 더했다. 그렇게 되면 맨 처음이 "X" 로 시작되면 계산이 완전히 달라지기 때문에 오답이다.

profile
기록 블로그

0개의 댓글