ν‹°μŠ€ν† λ¦¬ λ·°

728x90
λ°˜μ‘ν˜•

문제

 

3568번: iSharp

μž…λ ₯으둜 주어진 λ³€μˆ˜ 선언문을 문제의 쑰건에 맞게 λ³€ν˜•ν•œ λ’€, ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€. λ³€μˆ˜ν˜•κ³Ό λ³€μˆ˜λͺ… μ‚¬μ΄μ—λŠ” 곡백이 ν•˜λ‚˜ μžˆμ–΄μ•Ό ν•œλ‹€. 좜λ ₯은 μž…λ ₯으둜 주어진 λ³€μˆ˜ μ„ μ–Έλ¬Έμ—μ„œ λ³€μˆ˜κ°€

www.acmicpc.net

 

문제 풀이

 ν•œ μ€„λ‘œ μ—¬λŸ¬ 개의 λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ 것을 ν•˜λ‚˜μ”© λΆ„λ¦¬ν•˜μ—¬ 좜λ ₯ν•˜λŠ” λ¬Έμ œμ΄λ‹€. 예λ₯Ό λ“€μ–΄, 예제 μž…λ ₯ int& a*[]&, b, c*;의 κ²½μš°μ—λŠ” int&&[]* a; int& b; int&* c;와 같이 좜λ ₯ν•  수 μžˆλ‹€. 이λ₯Ό μœ„ν•΄ λ‹€μŒκ³Ό 같은 λ‘œμ§μ„ 톡해 λ³€μˆ˜ ν•˜λ‚˜μ”© λΆ„λ₯˜ν•˜λ©΄ λœλ‹€.

 

  • int&κ³Ό 같이 κ³΅ν†΅λœ νƒ€μž…μ„ λΆ„λ¦¬ν•œλ‹€.
  • 각 λ³€μˆ˜λ§ˆλ‹€ κ³΅ν†΅λœ νƒ€μž… + μ—­μˆœμœΌλ‘œ μžμ‹ μ˜ νƒ€μž…μ„ 좜λ ₯ν•œλ‹€.
    • []의 경우 μ—­μˆœμœΌλ‘œ 좜λ ₯ν•˜μ§€ μ•Šλ„λ‘ μ£Όμ˜ν•˜μ—¬μ•Ό ν•œλ‹€.
  • 처음 μ•ŒνŒŒλ²³μ΄ λ‚˜μ˜¨ 경우, ν•œμΉΈ λ›°μš°κ³  좜λ ₯ν•˜μ—¬μ•Ό ν•œλ‹€.
    • μ•ŒνŒŒλ²³ μ—­μ‹œ λ³€μˆ˜λͺ…μ΄λ―€λ‘œ μ—­μˆœμœΌλ‘œ 좜λ ₯ν•˜μ§€ μ•Šλ„λ‘ μ£Όμ˜ν•˜μ—¬μ•Ό ν•œλ‹€.

 

μ½”λ“œ

from sys import stdin

declaration = stdin.readline().rstrip()

for idx, value in enumerate(declaration.split()):
    if idx == 0:
        common = value
    else:
        name = ''
        first_alpha = False
        value = value[:-1]
        print(common, end='')

        for word in reversed(value):
            if word == ']':
                print('[', end='')
            elif word == '[':
                print(']', end='')
            elif word.isalpha():
                if not first_alpha:
                    print(' ', end='')
                    first_alpha = True
                name = word + name
            else:
                print(word, end='')
        print(name, end='')
        print(';')

 μ–΄λ €μš΄ λ¬Έμ œκ°€ μ•„λ‹ˆμ—ˆλŠ”λ°, λ³€μˆ˜λͺ…이 ν•œ 개라고만 μƒκ°ν•˜μ—¬ μ²˜μŒμ— μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ—¬ ν‹€λ ΈμŠ΅λ‹ˆλ‹€λ₯Ό ν•œλ²ˆ 보게 λ˜μ—ˆλ‹€.😒

728x90
λ°˜μ‘ν˜•
λŒ“κΈ€
κΈ€ 보관함
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€