코테연습문제
[백준/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. 기본 변수형, 변수형을 담은 리스트를 뒤집은 값, 변수명, ; 를 차례로 출력