[백준/파이썬] 3568 iSharp
#문제링크
https://www.acmicpc.net/problem/3568
3568번: iSharp
입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가
www.acmicpc.net
#나의풀이
import sys
if __name__ == '__main__':
_str = sys.stdin.readline()
_str = _str.split()
for i in range(1, len(_str)):
if _str[i][-1] == ',' or _str[i][-1] == ';':
_str[i] = _str[i][0:-1]
_str[i] = _str[i].replace('[]', '][')
for i in range(1, len(_str)):
tmp = ''
for j in range(len(_str[i])-1, -1, -1):
if _str[i][j].isalpha():
_str[i] = _str[0] + tmp + ' ' + _str[i][:j+1] + ';'
break
else:
tmp += _str[i][j]
for i in range(1, len(_str)):
print(_str[i])
#해설
구현 문제로 한가지씩 소거해가면서 풀면 된다.
1. 값을 입력받고 split으로 쪼개주었다. 0번째 인덱스는 공통으로 출력되니 건들면 안된다.
2. 0번째를 제외한 나머지는 변수명으로 마지막에 ,와 ;이 붙는다 이를 slice로 제거해주었다. 이후 변수명을 뒤부터 검사하여 앞으로 보내줘야하는데 []일시 ][으로 출력되므로 미리 replace로 바꾸어놓고 맞게 출력되게 설정한다.
3. tmp는 자료명에 이어 붙일 string이다. 이후 반복문을 돌면서 알파벳인지 확인한다. 만약 알파벳일경우 더이상 검사를 할 필요가 없다는것으로 _str[0]으로 자료형을 tmp로 자료형에 이어 붙일 값을 붙여주고 남은 _str[i]를 붙여준후 마지막에 ;이 들어가므로 추가해주었다.
알파벳이 아닐경우 tmp에 값을 추가해준다.(반복문은 _str[i]에서 -1부터 시작한다.)
4. 이후 반복문은 결과를 출력해준다.
#여담
테스트케이스가 1가지만 주어져서 꽤나 힘들었다. 변수명이 abcd가 될 수 있다는점 여러가지 경우의수가 존재한다.
https://www.acmicpc.net/board/view/30020
글 읽기 - 테스트 케이스 입니다.
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
어떤분이 테스트케이스를 모아서 올려주셨다 실패할경우 참고하시길 바란다.