코테연습문제

[백준/Python] 3568 iSharp

SI-AH 2023. 5. 24. 14:22

처음에 틀렸어서 너무 야매로 빡구현을 해서 그런가..? 했는데, 그게 아니라 변수명이 문자 여러개로 이루어져있을 때를 생각 못했어서 틀린 거였다. 그래서 alphabet이라는 변수를 만들어서 해결~

 

구현하기 전에 세운 로직은

1. 띄어쓰기 기준으로 나눠서 res에 isharp[0]을 넣고 나중에 맨 앞에 붙여야지(기본 변수형)

2. 한 변수 당 알파벳이 아니면 리스트에 append → [ ] 처리 잘 해주기

3. 알파벳이면 변수명이 문자 여러개로 이루어져 있을 때도 하나의 변수로 처리될 수 있도록 함

4. 리스트의 순서를 뒤집어

5. 순서대로 출력 → 맨 뒤에 ';'까지!!!!

이 정도!

근데 진짜 차례대로 구현하니까 잘 통과 됐다!!!!!!!!!

# 한 변수에 대한 변수 선언문 생성하는 함수
def solution(s):
    ans = []  # 입력받은 선언문에서 한 변수에 대한 모든 변수형을 담는 리스트
    res = ''  # 추가적인 변수형을 담는 변수
    alphabet = ''  # 변수명을 담는 변수

    # *, &인 경우 그냥 append하고, []의 경우에는 [일 경우에 []를 한 번에 append함
    # 변수명은 a, b, c처럼 문자 하나일 수도 있지만,
    # answer, arr 등과 같이 여러 문자의 조합일 수도 있기 때문에 alphabet 변수에 담아 사용
    for i in s:
        if i == '*' or i == '&':
            ans.append(i)
        elif i == '[':
            ans.append('[]')
        elif i == ']' or i == ',':
            continue
        elif i.isalpha():
            alphabet += i

    # 변수 오른편에 있는 변수형의 순서를 뒤집어서 왼편에 붙이기 위해 ans 리스트를 반대로 res에 추가
    for i in range(len(ans)-1, -1, -1):
        res += ans[i]

    # types(기본변수형), res(순서를 뒤집은 변수형), alphabet(변수명), ';'
    print(types + res, alphabet + ';')


isharp = list(map(str, input().split()))
types = isharp[0]  # 기본 변수형
for i in range(1, len(isharp)):
    solution(isharp[i])

풀이과정

1. 입력받은 선언문을 띄어쓰기 기준으로 나누고, 기본변수형을 따로 저장

2. 한 변수에 대한 변수 선언문을 생성하는 함수를 만들어서 변수형들을 리스트에 append / 변수명 따로 빼기

3. 기본 변수형, 변수형을 담은 리스트를 뒤집은 값, 변수명, ; 를 차례로 출력