본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[python] 19948 - 음유시인 영재

19948번: 음유시인 영재 (acmicpc.net)

 

19948번: 음유시인 영재

감수성이 뛰어난 음유시인 영재는 일상생활 중에 번뜩 시상이 떠오르곤 한다. 하지만 기억력이 좋지 못한 영재는 시상이 떠오르면 그 순간 컴퓨터로 기록해야만 안 까먹는다! 시는 대문자, 소

www.acmicpc.net

 

실버 3 문제였는데

문제를 꼼꼼히 읽고 풀지 않아서 중간에 계속 틀렸다.

문제에서 주의할 점은 시의 내용과 제목 모두 출력해야 한다는 점이다.

 

우선 ascii_lowercase를 사용하여 알파벳 리스트와 횟수 딕셔너리를 생성해주었고

문자열을 돌면서 횟수를 차감하는데

이전 문자열과 같을 경우는 차감하지 않고 넘어가도록 하였다.

대소문자 구별을 해야 되기 때문에 딕셔너리에서 값을 찾을 때는 lower()로 비교하였고

이전 값과 같은지 확인할 때에는 원래 문자 그대로 비교하였다.

 

이때, 입력 문자열은 공백을 기준으로 하여 리스트로 받았는데

문자 배열 길이 -1 이 스페이스 횟수보다 크지만 않으면 되기 때문이다.

 

앞에서 말했던 것처럼 제목도 출력할 수 있어야 하기 때문에

제목을 구하여 문자 배열 맨 뒤에 넣어주었고

스페이스 횟수는 이에 따라 '문자 배열 길이 -2'로 변경해주었다.

# 19948 음유시인 영재
import sys
from string import ascii_lowercase
input = sys.stdin.readline

## 검사
def alpha_chk():
    ## 스페이스 검사
    if len(poem) -2 > space:
        return -1
    
    #poem 배열 문자 비교
    for sc in poem:
        for i in range(len(sc)):
            c = sc[i]
            if i == 0:
                alpha[c.lower()] -= 1
            else:
                if c==sc[i-1]:
                    continue
                else:
                    alpha[c.lower()] -=1
            if alpha[c.lower()] <=-1:
                return -1
    return True
            
            
## main
poem = input().strip().split()
space = int(input())
alphaArr = list(map(int, input().split()))

## 제목 구해서 append
title=''
for i in range(len(poem)):
    # print(poem[i][0].upper(), end='')
    title+= poem[i][0].upper()
poem.append(title)
        
## alpha dic 생성
alpha={}
for i in range(len(ascii_lowercase)):
    alpha[ascii_lowercase[i]] = alphaArr[i]
    
## 함수 실행
rst=alpha_chk()

## 결과
if rst == True:
    print(poem[-1])
else:
    print(-1)

 

 

* 모든 코드는 github에서 관리합니다.  seinShin (SEIN SHIN) (github.com)

 

seinShin - Overview

blog : https://bboddorong.tistory.com/. seinShin has 7 repositories available. Follow their code on GitHub.

github.com

 

728x90

'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글

[python] 8979- 올림픽  (0) 2023.06.29
[python] 3826 - 스타일리시  (0) 2023.06.23
[python] 4386 - 별자리 만들기  (0) 2023.06.20
[python] 9519 - 졸려  (0) 2023.06.19
[python] 3107 - IPv6  (1) 2023.06.18