🧩 Algorithm/SWEA

[SWEA] 1946. κ°„λ‹¨ν•œ μ••μΆ• ν’€κΈ° (Python/D2)

devCloud 2023. 11. 9. 18:59
728x90
 

SW Expert Academy

SW ν”„λ‘œκ·Έλž˜λ° μ—­λŸ‰ 강화에 도움이 λ˜λŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ 컨텐츠λ₯Ό ν™•μΈν•˜μ„Έμš”!

swexpertacademy.com


μ„€λͺ…

원본 λ¬Έμ„œμ˜ λ„ˆλΉ„κ°€ 10이고, μ•ŒνŒŒλ²³μ˜ μ—°μ†λœ 개수둜 이루어져 μžˆλ‹€. μ••μΆ•λœ λ¬Έμ„œ λ‚΄μš©μ€ μ•ŒνŒŒλ²³κ³Ό 숫자둜 κ΅¬μ„±λ˜μ–΄ 있고, 압좕을 ν’€μ—ˆμ„ λ•Œ κ·Έ κ°œμˆ˜λŒ€λ‘œ λ¬Έμ„œμ˜ λ„ˆλΉ„μ— 맞게 좜λ ₯λ˜μ•Ό ν•œλ‹€.

 

[예제]
μ••μΆ•λœ λ¬Έμ„œμ˜ λ‚΄μš©
A 10
B 7
C 5

압좕을 ν’€μ—ˆμ„ λ•Œ 원본 λ¬Έμ„œμ˜ λ‚΄μš©
AAAAAAAAAA
BBBBBBBCCC
CC

 

풀이

λ‹¨μˆœ κ΅¬ν˜„
1. λ¬Έμžν˜•μœΌλ‘œ μž…λ ₯λ°›κ³  μ •μˆ˜λŠ” μ •μˆ˜ν˜•μœΌλ‘œ μΉ˜ν™˜
2. ν•œ λ¦¬μŠ€νŠΈμ— μ•ŒνŒŒλ²³μ„ λͺ¨λ‘ μ €μž₯, μ•ŒνŒŒλ²³κ³Ό μ •μˆ˜λ₯Ό κ³±ν•΄μ„œ λ¦¬μŠ€νŠΈμ— λ”ν•œλ‹€.

3. for문으둜 λ¦¬μŠ€νŠΈμ—μ„œ ν•˜λ‚˜μ”© κΊΌλ‚Έλ‹€. 

4. μ•ŒνŒŒλ²³μ„ 같은 쀄에 곡백을 μ œμ™Έν•˜κ³  좜λ ₯ν•˜κ³  카운트λ₯Ό λ”ν•œλ‹€.

5. λ§Œμ•½ μΉ΄μš΄νŠΈκ°€ 10 이상이 되면 카운트 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™” μ‹œν‚€κ³  λ‹€μŒ μ€„λ‘œ λ„˜μ–΄κ°€κ²Œ ν•œλ‹€

 

Solution

t = int(input())

for i in range(1, t+1):
    n = int(input())
    alpha_list = [] #μ•ŒνŒŒλ²³μ„ ν•œ 곳에 μ €μž₯ν•  리슀트, alpha_list = ''라고 해도 됨
    for _ in range(n):
        alpha, num = input().split() #μ •μˆ˜λŠ” μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ ν•„μš”
        alpha_list += alpha*int(num) #AAAAAAAAAABBBBBBBCCCCC
    cnt = 1
    print('#'+str(i))
    for ans in alpha_list:
        print(ans, end='') #예제 좜λ ₯ 주의
        cnt += 1
        if cnt > 10: 
            print()
            cnt = 1
    print() #μΆ”κ°€

 

λ‹€λ₯Έ 풀이

t = int(input())
for tc in range(t, 1+t):
    n = int(input())
    document = ''
    for _ in range(n):
        word, number = input().split()
        document += word*int(number)

    print('#{}'.format(tc))

    for i in range(0, len(document), 10): #10 λ‹¨μœ„λ‘œ 반볡
        print(document[i:i+10]) #λ¬Έμžμ—΄μ—μ„œ 10κ°œμ”©λ§Œ 좜λ ₯ν•˜κ²Œ 함

πŸ‘©‍πŸ’» 회고

μ‘Έλ¦° μƒνƒœλ‘œ ν’€μ–΄μ„œμΈμ§€ 1μ‹œκ°„μ΄ μ§€λ‚˜λ„λ‘ 풀리지 μ•Šμ•„μ„œ λ‹€λ₯Έ 날에 λ‹€μ‹œ ν’€μ—ˆλ”λ‹ˆ ν’€λ Έλ‹€!

λ¬Έμžμ™€ μ •μˆ˜λ₯Ό 같이 μž…λ ₯λ°›λŠ” 것뢀터 λ¬Έμ œμ˜€λŠ”λ° λ‚˜μ€‘μ— μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법을 생각λͺ»ν•΄μ„œ λ¬Έμ œκ°€ μ–΄λ ΅κ²Œ ν’€λ Έλ‹€. λ˜ν•œ λ¦¬μŠ€νŠΈμ— μ €μž₯ν•˜λŠ” 방법도 μ΄μƒν–ˆκ³  이쀑 λ¦¬μŠ€νŠΈκΉŒμ§€ λ§Œλ“€μ–΄μ„œ ν’€λ €κ³  ν–ˆμœΌλ‚˜ μ•ˆ ν’€λ Έλ‹€. 쑸렸던 탓이라고 ν•˜μž. γ…Ž

 

였늘 ν’€μ—ˆμ„ λ•ŒλŠ” 방법을 λ‹€λ₯΄κ²Œ ν–ˆλ‹€. ν•œ λ¦¬μŠ€νŠΈμ— λͺ¨λ‘ μ €μž₯ν•˜κ³  10κ°œμ”© λŠμ–΄μ„œ 좜λ ₯ν•˜κ²Œ ν–ˆλ‹€. μ΄λ ‡κ²Œ ν‘Έλ‹ˆ μ’€ 더 κ°„κ²°ν•˜κ³  μˆ˜μ›”ν–ˆλ‹€. κ·ΈλŸ¬λ‚˜ 4μ°¨ μ œμΆœμ—μ„œμ•Ό μ„±κ³΅ν–ˆλ‹€..

2μ°¨ 제좜 λ•Œ, λŒ“κΈ€μ— κ°œν–‰ 문자 λ•Œλ¬Έμ΄λΌλŠ” 말 λ•Œλ¬Έμ— input()μ˜†μ— strip()λ₯Ό μΆ”κ°€ν–ˆμ§€λ§Œ 2차도 μ‹€νŒ¨ν–ˆλ‹€.

3μ°¨ 제좜 λ•Œ, 문제λ₯Ό λ³΄λ‹ˆ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ—¬λŸ¬ 개 일 λ•Œ 첫 번째 κ²°κ³Όλ₯Ό 좜λ ₯ν•˜κ³ , λ‹€μŒ μ€„λ‘œ λ„˜μ–΄κ°€μ„œ μž…λ ₯을 λ°›μ•„μ•Ό ν•˜λŠ”λ° 같은 쀄에 μ΄μ–΄μ„œ μž…λ ₯을 λ°›κ²Œ ν•΄μ„œ λ§ˆμ§€λ§‰μ— print()λ₯Ό μΆ”κ°€ν–ˆλ‹€. ν•˜μ§€λ§Œ 3μ°¨ μ—­μ‹œ μ‹€νŒ¨ν–ˆλ‹€. 

4μ°¨ 제좜 λ•Œ, ν™•μ‹€ν•œ λ¬Έμ œμ μ„ μΈμ§€ν•˜κ²Œ 됐닀. 예제 좜λ ₯을 λ³΄λ‹ˆ λ¬Έμžμ—΄μ΄ λͺ¨λ‘ λΆ™μ–΄μžˆμ—ˆλ‹€! λ²„λ¦‡μ²˜λŸΌ 곡백 κΈ°μ€€μœΌλ‘œ λΆ„λ¦¬ν•˜λ©΄μ„œ 좜λ ₯ν•˜κ²Œ ν–ˆμ—ˆλ‹€.. κ·Έλž˜μ„œ end = ' ' μ—μ„œ end = '' μ΄λ ‡κ²Œ λ°”κΏ¨λ”λ‹ˆ λ“œλ””μ–΄ μ„±κ³΅ν–ˆλ‹€!!

 

μ—¬κΈ°μ„œ 느꼈던 건, ν”Όκ³€ν•œ μƒνƒœλ‘œ 문제λ₯Ό ν’€λ©΄ μ‰¬μš΄ λ¬Έμ œλ„ μ•ˆ ν’€λ¦¬κ²Œ λœλ‹€λŠ” 것. 그리고 문제λ₯Ό μ΄ν•΄ν•˜λŠ” 것도 μ€‘μš”ν•˜μ§€λ§Œ μž…μΆœλ ₯ 쑰건도 ν™•μ‹€ν•˜κ²Œ 보고 λ„˜μ–΄κ°€μžλŠ” 것이닀.

728x90