반응형
문제
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 |