본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 2][Python] 3448번 : 문자 인식

by 빛밤하늘 2021. 5. 13.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

3448번: 문자 인식

동혁이는 새로운 이미지 문자 인식 프로그램을 만들었다. 이 프로그램은 종이에 쓰여 있는 글자를 스캔한 뒤, 텍스트 파일로 저장한다. 동혁이는 밤을 새며 열심히 프로그램을 만들었지만, 프로

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 첫째 줄에는 테스트 케이스의 개수 N을 입력합니다.
N = int(stdin.readline())

# 테스트 케이스의 개수 N만큼 반복합니다.
for test_case_idx in range(N):
    # 한 테스트 케이스에서의 모든 문장을 저장하는 변수를 선언합니다.
    all_sentence = ''

    # 한 테스트 케이스에서 모든 문장을 반복해봅니다.
    for line in stdin:
        # 각 테스트 케이스의 다음 줄에는 빈 줄이 한 칸씩 있으므로
        # 현재 한 줄이 다음 줄로 넘어가는 빈 문장이라면
        if line == '\n':
            # all_sentence의 맨 오른쪽의 \n을 지워줍니다.
            all_sentence = all_sentence.rstrip('\n')
            # 반복문을 탈출합니다.
            break
        # 현재 한 줄에 글씨들이 있다면
        else:
            # 현재 한 줄의 맨 오른쪽의 \n을 지우고 all_sentence에 넣어줍니다.
            all_sentence += line.rstrip('\n')

    # 전체 문자의 수를 저장하는 변수를 선언합니다.
    A = len(all_sentence)
    # 전체 문자에서 #을 뺀 인식한 문자의 수를 저장하는 변수를 선언합니다.
    R = A - all_sentence.count('#')
    # 인식률을 저장하는 변수를 선언합니다.
    # 소수점 둘째 자리에서 반올림합니다.
    R_divide_A = round(R / A * 100, 1)

    # R_divide_A의 소수 부분이 0이라면
    if str(R_divide_A).split('.')[-1] == '0':
        # 정수형으로 변환해줍니다.
        R_divide_A = int(R_divide_A)

    # 출력 형식에 맞게 출력합니다.
    print(f"Efficiency ratio is {R_divide_A}%.")

결과

 

첫 번째 제출에서 출력 초과가 나온 이유는 중간에 값들을 체크하기 위해 print를 넣어놓은 것을 

빼지 않고 제출해버렸기 때문입니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글