코딩테스트

[백준/파이썬] 3568 iSharp

Sun0727 2022. 6. 16. 16:08

#문제링크

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

어떤분이 테스트케이스를 모아서 올려주셨다 실패할경우 참고하시길 바란다.