백준_단계별로 풀어보기_6단계 심화1

######### 백준 25083 새싹 ##########
str = '''         ,r'"7
r`-_   ,'  ,/
 \. ". L_r'
   `~\/
      |
      |'''
print(str)


######### 백준 3003 킹,퀸,룩,비숍,나이트,폰 ##########
pin = [1,1,2,2,2,8]
find_pin = list(map(int, input().split()))
for i, j in zip(pin, find_pin):
    print(i-j, end=" ")


######### 백준 2444 별 찍기7 ##########
# 시간 많이 잡아먹었다.... 출력 형식 때문에...
# 문제에선 뒷부분 스페이스 출력이 없는데 난 그 부분까지 출력되게 해놔서 주구장창 오류..
# 결국 메모장에 출력 대조하다가 알았다.
# 이제보니 어차피 for문을 2n 돌려야하는만큼 일일이 if 대조하는 것보다 두 개 쓰는게 나았을지도
n = int(input())
j = 0
for i in range(1, 2*n):
    if i > n:
        j += 2
    print(" " * (n-(i-j)) + "*" * (2*(i-j)-1))


######### 백준 10988 팰린드롬인지 확인하기 ##########
s = input()
print(1 if s == s[::-1] else 0)


######### 백준 1157 단어 공부 ##########
from collections import Counter
s = input().upper()
val = Counter(s).most_common(2)
if len(s) == 1: print(val[0][0])
else: print("?" if val[0][1] == val[1][1] else val[0][0])


# #고수코드
# s = input().upper()
# max_idx = 0
# for i in range(26):
#     cnt = s.count(chr(i+65))
#     if max_idx < cnt:
#         max_idx = cnt
#         max_char = chr(i+65)
#     elif max_idx == cnt:
#         max_char = '?'
# print(max_char)


######### 백준 4344 평균은 넘겠지 (복습) ##########
# 파이썬은 오사오입인데 반해 채점은 사사오입 기준이라 계속 틀렸었다.
# 함수를 따로 지정하여 출력하면 됨을 스택오버플로우에서 찾았다.
# https://hleecaster.com/python-round/
def roundTraditional(val, digits):
    return round(val+10**(-len(str(val))-1), digits)

import sys
for _ in range(int(input())):
    count = 0
    score_list = list(map(int, sys.stdin.readline().split()))
    n = score_list.pop(0)
    avg = sum(score_list)/n
    for i in score_list:
        if i > avg:
            count += 1
    print(f"{roundTraditional(count/n*100, 3)}%")

# 고수코드: 함수 추가 없이 뒷자리가 5가 되지 않도록 취해준 것 같다.
# print(f"{count / n * 100 + 1e-4:.3f}%")


######### 백준 2941 크로아티아 알파벳_실버5 ##########
# 30분 시간제한 (실패)
# 최초 코드
word = input()
count = 0
c_alphabet = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
for i in c_alphabet:
    while word.find(i) > -1:
        word = word.replace(i," ",1)
        count += 1
word = word.replace(" ", "")
count += len(word)
print(count)

# 최종 코드
word = input()
c_alphabet = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="]
for i in c_alphabet:
    word = word.replace(i," ")
print(len(word))

# 고수코드: 그냥 하나로 치환해버린 다음에 len으로 세버렸다. 손나바카나...
# for i in c_alphabet:
#     word = word.replace(i,'*')

######### 백준 1316 그룹 단어 체커_실버5 ##########
# 30분 시간제한 (실패)
import sys
cnt = 0
for _ in range(int(input())):
    arr = [0] * 26
    error = 0
    word = sys.stdin.readline().rstrip()
    for i in range(len(word)):
        index = ord(word[i]) - ord('a')
        if word[i-1] == word[i]:
            arr[index] = 0
        elif arr[index] == 1:
            error += 1
            break
        arr[index] = 1
    if error == 0:
        cnt += 1
print(cnt)

#고수코드: x.find가 뭔지 찾진 못했는데 맥락으로 이해했다.
# print(sum([*x]==sorted(x,key=x.find)for x in open(0))-1)
# 해석
# sorted(x,key=x.find) 이 함수로 각 char에 대해 정렬
# [*x] 와 동등비교연산을 통해 bool값 리턴하고 true(1) 값 합산


######### 백준 25206 너의 평점은_실버5 ##########
import sys
major_sum = 0
grade_sum = 0
score_board = {"A+": 4.5, "A0": 4.0, "B+": 3.5, "B0":3.0, "C+":2.5,"C0":2.0, "D+":1.5, "D0":1.0, "F":0.0}
for _ in range(20):
    _, credit, grade = sys.stdin.readline().split()
    if grade == "P": continue
    grade_sum += float(credit)
    major_sum += float(credit) * score_board[grade]
print(major_sum/grade_sum)

#고수코드: 0~4.5까지 인덱스를 2로 나누면 학점이 나온다
g = ['F','X','D0','D+','C0','C+','B0','B+','A0','A+']
print(g.index("A0")/2)

라이브러리 의존적인 사람이 되지 말자!