반응형
문제
https://www.acmicpc.net/problem/3568
3568번: iSharp
입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가
www.acmicpc.net
🐍파이썬
import sys
input=sys.stdin.readline
# 세 변수 입력받은 뒤 ";" 제외, 입력받은 문자열을 " " 기준으로 슬라이싱
a = input().rstrip()[:-1].split(" ")
#변수의 갯수만큼 타입리스트 생성
type_list = [a[0]] * (len(a) - 1)
#첫번째 원소인 type 제거
a = a[1:]
for i in range(len(a)):
#문자열 뒤에서부터 탐색
for j in a[i][::-1]:
if j == ",":
a[i] = a[i][:-1] #a에서도 ","를 삭제
elif j == "&":
type_list[i] += "&" #변수i 타입리스트의 문자열에 & 추가
a[i] = a[i][:-1]
elif j == "]":
type_list[i] += "[]"
a[i] = a[i][:-2] #a에서 "[]"를 삭제
elif j == "*":
type_list[i] += "*"
a[i] = a[i][:-1]
elif j.isalpha(): #알파벳이 나오면 변수명이므로 for문 탈출
break
for i, j in zip(type_list, a):
print(str(i), str(j), end="")
print(";")
if else를 사용하여 가능한 모든 경우의 수를 처리해 주었다.
다른 풀이 방법
vars = input().split()
base = vars.pop(0) #기본type명
for var in vars:
var = var.replace(',', '').replace(';', '') #쓸데없는 문자 지우기
print(base, end='')
#타입 출력, 문자열 뒤에서부터 탐색
for c in var[::-1]:
if not c.isalpha():
if c == ']':
print('[', end='')
elif c == '[':
print(']', end='')
else:
print(c, end='')
print(' ', end='')
#변수명 출력
for c in var:
if c.isalpha(): print(c, end='')
print(';')
리스트를 굳이 사용하지 않고 for문과 if문을 적절히 사용하여 답을 출력했다.
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준|파이썬] 2852: NBA 농구 (실버3) (0) | 2023.06.27 |
---|---|
[백준|파이썬] 1138: 한 줄로 서기 (실버2) (0) | 2023.06.24 |
[백준|파이썬] 16506: CPU (실버5) (0) | 2023.05.06 |
[백준|파이썬] 14719: 빗물 (골드5) (0) | 2023.05.04 |
[백준|파이썬] 7568: 덩치 (실버5) (2) | 2023.04.30 |
[백준|파이썬] 4673: 셀프 넘버 (실버5) (0) | 2023.04.29 |