[BOJ/Python] 3568 iSharp

문제

시간 제한 1초

메모리 제한 128MB

문제 선영이는 C, C++, Java와는 다른 아주 세련된 언어를 만들었다. 선영이는 이 아름답고 예술적인 언어의 이름을 i#으로 정했다.

i#은 기본 변수형과 배열([]), 참조(&), 포인터()를 제공한다. 배열, 참조, 포인터는 순서에 상관없이 혼합해서 사용할 수 있다. 즉, int의 참조의 참조의 배열의 포인터도 올바른 타입이다. int&&[]

i#은 여러 개의 변수를 한 줄에 정의할 수 있다. 공통된 변수형을 제일 먼저 쓰고, 그 다음에 각 변수의 이름과 추가적인 변수형을 쓰면 된다. 예를 들면 아래와 같다.

int& a[]&, b, c;

a의 타입은 int&&[], b는 int&, c는 int&이 된다. 변수의 오른편에 있는 변수형은 순서를 뒤집어서 왼편에 붙일 수 있다. 따라서, int& a는 int a&와 같다.

변수의 선언이 보기 복잡하고 혼란스럽기 때문에, 앞으로는 한 줄에 변수를 하나씩 선언하려고 한다.

i#의 변수 선언문이 주어진다. 이때, 각각의 변수의 오른편에 있는 변수형을 모두 왼쪽으로 옮기고, 한 줄에 하나씩 선언하는 프로그램을 작성하시오.


입력 첫째 줄에 i#의 변수 선언문이 주어진다. 이 선언문에는 변수가 여러개 포함되어 있을 수도 있다.

선언문의 가장 처음에는 기본 변수형이 주어진다. 그 다음에는 추가적인 변수형이 주어진다. 추가적인 변수형은 없을 수도 있다. 그 다음 공백 이후에는 변수 선언이 하나씩 주어진다. 변수 선언은 콤마와 공백으로 나누어져 있고, ;로 끝난다. 각 변수의 선언 처음에는 기본 변수명이 주어진다. 그 다음에는 추가적인 변수형이 주어진다. 추가적인 변수형은 없을 수도 있다.

기본 변수형과 변수명은 같지 않으며, 알파벳 소문자와 대문자로만 이루어져 있다. 각 줄의 길이는 120글자를 넘지 않는다.

출력 입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가 선언된 순서대로 출력한다.

문제예제

Untitled


문제접근

문제에서 요구하는대로 문자열을 자르고 넣으면 된다. 파이썬 문자열 함수를 알면 어렵지 않고 빠르게 풀 수 있다. 사용된 함수는 아래와 같다.

str.replace(a,b) a문자열을 b문자열로 바꿔준다.

str.split(a) a문자열 기준으로 잘라서 리스트를 반환

arr[::-1] 처음부터 끝까지 -1 간격으로 리스트 반환 (즉, 문자열 뒤집어진다)


코드

str = input()
str = str.replace(',', '') # , 없애기
str = str.replace(';','') # ; 없애기
str_list = str.split(' ') # 잘라서 넣어줌


for i in range(1,len(str_list)):
    # 첫번째 배열 넣어줌 ( 타입 int ~~ )
	temp = str_list[0]
	var = '' #변수명 뒤에 오는 선언문 넣을꺼
	name = '' #변수명 넣을꺼

	for j in list(str_list[i]):
		if j == '[':
			var += ']'
		elif j==']':
			var +='['
		elif j=='&' or j=='*':
			var += j
		else:
			name +=j

    #변수명 뒤집어서 들어가짐 그래서 뒤집어줌
	var = var[::-1]
	print(temp+var+' '+name+';' ) #합체

Categories:

Updated:

Leave a comment