iSharp

bird.j·2021년 8월 13일
0

백준

목록 보기
36/76

백준 3568

  • i#은 기본 변수형과 배열([]), 참조(&), 포인터(*)를 제공한다. 배열, 참조, 포인터는 순서에 상관없이 혼합해서 사용할 수 있다. 즉, int의 참조의 참조의 배열의 포인터도 올바른 타입이다. int&&[]*
  • i#은 여러 개의 변수를 한 줄에 정의할 수 있다. 공통된 변수형을 제일 먼저 쓰고, 그 다음에 각 변수의 이름과 추가적인 변수형을 쓰면 된다. 예를 들면 아래와 같다.
    int& a*[]&, b, c*;
  • a의 타입은 int&&[]*, b는 int&, c는 int&*이 된다. 변수의 오른편에 있는 변수형은 순서를 뒤집어서 왼편에 붙일 수 있다. 따라서, int*& a는 int a&*와 같다.
  • i#의 변수 선언문이 주어진다. 이때, 각각의 변수의 오른편에 있는 변수형을 모두 왼쪽으로 옮기고, 한 줄에 하나씩 선언하는 프로그램을 작성하시오.
  • 입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가 선언된 순서대로 출력한다.

입출력

입력출력
int& a*[]&, b, c*;int&&[]* a;
int& b;
int&* c;



접근 방식

: 파이썬 문자열 파싱 이용.

알게된 점

문자열에서 연속한 문자를 다른 문자로 바꿀 때, list로 변경안하고 replace써서 해결하면 깔끔하다.

주의할 점

이 문제에서 주의할 점은, 변수명이 a, b, c이렇게 하나씩이 아니라 여러글자 aaba 일 수도 있다는 것.



코드

string = input().split()

for i in range(1, len(string)):
    for k in range(len(string[i])):
        if string[i][k].isalpha():
            continue
        else:
            break
    
    vari = string[i][:k]
    if string[i][-1]==',' or string[i][-1]==';':
        now_s = string[i][k:-1]
    else:
        now_s = string[i][k:]

    new = now_s[::-1]
    new = new.replace('][', '[]')
    new = ''.join(new)
    print(string[0]+new+' '+vari+';')

0개의 댓글